gpt4 book ai didi

dart - Flutter/Dart 基本理解

转载 作者:IT王子 更新时间:2023-10-29 07:21:58 26 4
gpt4 key购买 nike

很抱歉打扰您。但我想回到编程,我只是无法得到以下内容(来自 flutter 的代码示例)

class MyAppBar extends StatelessWidget {
MyAppBar({this.title});

// Fields in a Widget subclass are always marked "final".

final Widget title;

@override
Widget build(BuildContext context) {
return Container(
height: 56.0, // in logical pixels
padding: const EdgeInsets.symmetric(horizontal: 8.0),
decoration: BoxDecoration(color: Colors.blue[500]),
// Row is a horizontal, linear layout.
child: Row(
// <Widget> is the type of items in the list.
children: <Widget>[
IconButton(
icon: Icon(Icons.menu),
tooltip: 'Navigation menu',
onPressed: null, // null disables the button
),
// Expanded expands its child to fill the available space.
Expanded(
child: title,
),
IconButton(
icon: Icon(Icons.search),
tooltip: 'Search',
onPressed: null,
),
],
),
);
}
}

class MyScaffold extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Material is a conceptual piece of paper on which the UI appears.
return Material(
// Column is a vertical, linear layout.
child: Column(
children: <Widget>[
MyAppBar(
title: Text(
'Example title',
style: Theme.of(context).primaryTextTheme.title,
),
),
Expanded(
child: Center(
child: Text('Hello, world!'),
),
),
],
),
);
}
}

void main() {
runApp(MaterialApp(
title: 'My app', // used by the OS task switcher
home: MyScaffold(),
));
}

所以我脑子里有几个问题和一些我只是不知道它们是否正确的答案。如果你能帮助我并纠正我,那就太好了。

  1. 在类 MyAppBar 的开头

    类 MyAppBar 扩展了 StatelessWidget { MyAppBar({this.title});

    //Widget 子类中的字段总是标记为“final”。

    最终的 Widget 标题;

为什么这是必要的?我们是否“告诉”,每次调用此小部件时都会传递一个标题(并且标题是一个小部件)?

  1. 从 MyScaffold 调用同一个 Widget 背后的逻辑是什么(我知道,逻辑是您可以更改标题等)。是否就像我们使用另一个 Column Widget 构建 Widget,然后将 MyAppBar 传递给 Column Widget?如果是,Widget 怎么知道,MyAppBar-Widget 有什么期望

    返回 Material ( //Column 是垂直的线性布局。 child :专栏( children : [ 我的应用程序栏( 标题:文本( '示例标题',

(为什么它知道标题是“Searched”)

这是它只期望我们写的标题的原因吗

MyAppBar({this.title});

一开始?

如果我写在 MyAppBar 中,我是对的吗

MyAppBar({this.title});
MyAppNumber({this.number});

每次调用小部件时,它都需要 2 个输入?

希望我的问题可以理解,非常感谢您的帮助!!!

来源:https://flutter.dev/docs/development/ui/widgets-intro

可能更容易阅读

编辑:或者我怎么能在另一个 AppBar 下面添加另一个 AppBar,也许我理解得更好。

最佳答案

  1. 所有字段都标记为最终的,因为该类是不可变的,因此根据定义,任何和所有字段都必须标记为最终的。

  2. 当您扩展 StatelessWidget 时,您会创建一个 Widget,因此 MyAppBar 现在就像 Column 或 Center 一样是一个 Widget,因此所有关于 Widget 的规则都有效。它还需要一个标题,因为您在 MyAppBar 的构造函数中引用了一个标题变量。

希望这能澄清您的任何问题!

关于dart - Flutter/Dart 基本理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55173883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com