一尘不染

flutter中的runApp(new MyApp())和runApp(new MaterialApp())有什么区别?

flutter

在flutter中,我们可以传递一个无状态小部件,该小部件将MaterialApp实例返回给runApp()函数,如下所示:

void main()=>runApp(new MyApp());

class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        return new MaterialApp(
            ...
        );
    }
}

或者我们可以像这样MaterialApp直接将的实例传递给runApp()函数:

void main()=>runApp(
    new MaterialApp(
       ...
    );
);

这些方法之间有什么区别?谢谢。


阅读 874

收藏
2020-08-13

共1个答案

一尘不染

视觉行为没有差异。变化的是热重装的行为方式。

例如,如果您使用runApp(MaterialApp()),则从

runApp(MaterialApp(title: 'Foo'))

runApp(MaterialApp(title: 'Bar'))

则热重载不会考虑更改。

而如果您有以下课程:

class MyApp {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Foo',
    );
  )
}

并像这样使用它:

runApp(MyApp())

然后改变titleMyApp将被正确地重新加载热点。

2020-08-13