首页 > 解决方案 > Flutter 中的 runApp(new MyApp()) 和 runApp(new MaterialApp()) 有什么区别?

问题描述

在 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(
       ...
    );
);

这些to方式有什么区别?谢谢。

标签: flutter

解决方案


视觉行为没有区别。改变的是热重载的行为方式。

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

runApp(MaterialApp(title: 'Foo'))

runApp(MaterialApp(title: 'Bar'))

那么热重载不会考虑更改。

如果您有以下课程:

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

并像这样使用它:

runApp(MyApp())

然后更改titleMyApp正确地热重新加载。


推荐阅读