flutter - 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方式有什么区别?谢谢。
解决方案
视觉行为没有区别。改变的是热重载的行为方式。
例如,如果您使用runApp(MaterialApp())
,从
runApp(MaterialApp(title: 'Foo'))
至
runApp(MaterialApp(title: 'Bar'))
那么热重载不会考虑更改。
如果您有以下课程:
class MyApp {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Foo',
);
)
}
并像这样使用它:
runApp(MyApp())
然后更改title
将MyApp
正确地热重新加载。
推荐阅读
- java - Java 12 Shell 无法在 Windows 上正确读取键盘输入
- javascript - javascript中的视口大小
- hazelcast - 有没有办法以编程方式清除 Hazelcast 缓存统计信息?
- google-apps-script - 可靠的下拉列表和 getValues() 二维数组
- javascript - 依次调用 API 直到响应为空
- python - Python中的三重数组
- java - 如何通过覆盖接口实现 Fragment-Activity 通信?
- tkinter - 为什么 pyInstaller 试图导入 tkinter?
- c# - 动态关键字影响返回类型
- android - 具有不同子类型的 Retrofit 2.0 嵌套 json