【问题标题】:What is the difference between GetMaterialApp of GetX and MaterialApp of Flutter?GetX 的 GetMaterialApp 和 Flutter 的 MaterialApp 有什么区别?
【发布时间】:2022-10-15 23:38:48
【问题描述】:
GetX 的 GetMaterialApp 和 Flutter 的 MaterialApp 有什么区别?
我来自 C++,我们从父级继承然后对其进行扩展,但根据文档,这里是:
https://pub.dev/packages/get
注意:这并没有修改Flutter的MaterialApp,GetMaterialApp不是修改后的MaterialApp,它只是一个预先配置好的Widget,它有默认的MaterialApp作为child。您可以手动配置它,但绝对没有必要。GetMaterialApp 将创建路线,注入它们,注入翻译,注入路线导航所需的一切。如果只使用 Get 进行状态管理或依赖管理,则无需使用 GetMaterialApp。GetMaterialApp 对于路线、小吃店、国际化、底部工作表、对话框以及与路线和缺少上下文相关的高级 API 是必需的。
这看起来好像 GetMaterialApp 内部调用了 MaterialApp 的函数,并提供了用户的语法糖来避免 MaterialApp(?)
我的理解正确吗?
但是,这句话似乎不是在谈论继承(?)。
这并没有修改Flutter的MaterialApp,GetMaterialApp并不是修改后的MaterialApp,它只是一个预先配置好的Widget,它有默认的MaterialApp作为child。
【问题讨论】:
标签:
flutter
dart
flutter-getx
【解决方案1】:
Getx包中的GetMaterialApp可以这样理解
MaterialApp + Getx 属性 = GetMaterialApp
如果你翻看GetMaterialApp的源码,你会发现只是一个属性与MaterialApp's相同的类,而这些属性只是链接到原来的MaterialApp,加上自定义的属性仅限于Getx,因此结果(GetMaterialApp)实际上是MaterialApp 加上Getx 属性(顺便说一下,就像页面,initialBinding...)。
这句话:
这并没有修改Flutter的MaterialApp,GetMaterialApp不是修改后的MaterialApp,它只是一个预先配置好的Widget,它有默认的MaterialApp作为child。
是的,它从字面上继承了MaterialApp 所以GetMaterialApp 中编写的属性获得了相同的功能和能力......,来自原始MaterialApp
除了定制的属性。
希望这能给你一个更好的方法。
您可以查看源代码,您将更好地了解Getx 的实际作用。