一尘不染

在Flutter中保持所有常数的最佳实践是什么?

flutter

什么是最佳编程实践

在Flutter中创建一个常量类

保留所有应用程序常数以便于参考。我知道constDart中有一个用于创建常量字段的关键字,但是可以static与const一起使用,还是会在运行时创建内存问题。

class Constants {
static const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";
}

阅读 341

收藏
2020-08-13

共1个答案

一尘不染

尽管方面没有技术问题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,但具有许多优点:

  • 适用于热装
  • 易于测试和模拟
  • 可以用比常量更具动态性的东西代替,而无需重写整个应用程序。

但同时:

  1. 不会消耗更多的内存(继承的小部件通常创建一次)
  2. 是高性能的(获取InheritedWidget为O(1))
2020-08-13