在Flutter中保持所有常数的最佳实践是什么?
问题内容:
什么是最佳编程实践
在Flutter中创建一个常量类
保留所有应用程序常数以便于参考。我知道const
Dart中有一个用于创建常量字段的关键字,但是可以static
与const一起使用,还是会在运行时创建内存问题。
class Constants {
static const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";
}
问题答案:
尽管方面没有技术问题static const
,但从体系结构上来说,您可能希望采用其他方法。
Flutter往往 没有 任何全局/静态变量, 而是 使用InheritedWidget。
这意味着您可以编写:
class MyConstants extends InheritedWidget {
static MyConstants of(BuildContext context) => context. dependOnInheritedWidgetOfExactType<MyConstants>();
const MyConstants({Widget child, Key key}): super(key: key, child: child);
final String successMessage = 'Some message';
@override
bool updateShouldNotify(MyConstants oldWidget) => false;
}
然后插入到应用程序的根目录:
void main() {
runApp(
MyConstants(
child: MyApp(),
),
);
}
并这样使用:
@override
Widget build(BuilContext context) {
return Text(MyConstants.of(context).successMessage);
}
该代码比的代码多一点static const
,但具有许多优点:
- 适用于热装
- 易于测试和模拟
- 可以用比常量更具动态性的东西代替,而无需重写整个应用程序。
但同时:
- 不会消耗更多的内存(继承的小部件通常创建一次)
- 是高性能的(获取InheritedWidget为O(1))