很抱歉打扰您这个问题。但是我试图重新进入 编程,但我无法获得以下内容(来自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(),
));
}
所以我脑子里有几个问题,有些答案我只是不知道它们是否正确。因此,我可以帮助我并纠正我,这将是很好。
MyAppBar类的开头
MyAppBar类扩展了StatelessWidget { MyAppBar({this.title});
// Widget子类中的字段始终标记为“最终”。
最终小部件标题;
为什么这是必需的?我们是否“告诉”每次传递此小部件一个标题(标题为小部件)的情况?
从MyScaffold调用同一Widget的背后的逻辑是什么(我知道,逻辑是您可以更改标题等)。 就像我们用另一个Column Widget构建Widget,然后将MyAppBar传递给Column Widget一样吗? 如果是,那么小部件如何知道,对MyAppBar-Widget的期望
返回物料( //列是垂直的线性布局。 子:列( 儿童:[ MyAppBar( 标题:文本( “示例标题”,
(为什么知道标题是“已搜索”)
这是我们只希望标题的原因吗?
MyAppBar({this.title});
在一开始?
如果我要在MyAppBar中写东西,我是对的
MyAppBar({this.title});
MyAppNumber({this.number});
每次调用该小部件时,它都需要2个输入?
希望我的问题我可以理解,非常感谢您的帮助!!!
来源:https://flutter.dev/docs/development/ui/widgets-intro
可能更容易阅读
编辑:或者我该如何在另一个AppBar下方添加另一个AppBar,也许我理解得更好。
答案 0 :(得分:1)
所有字段都标记为final,因为该类是不可变的,因此根据定义,所有字段都必须标记为final。
扩展StatelessWidget时,您将创建一个Widget,因此MyAppBar现在就像Column或Center一样是一个Widget,因此所有有关Widget的规则都将生效。它还需要一个标题,因为您在MyAppBar的构造函数中引用了一个title变量。
希望这可以澄清您的任何疑问!