微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从应用程序的任何屏幕访问集合中的值?

如何解决如何从应用程序的任何屏幕访问集合中的值?

当我的应用程序启动时,它会遍历一个单词列表并创建一个特定的集合。这个集合是在应用程序启动时创建的。一旦创建,它将不再改变。 我如何从任何屏幕访问这个集合? 我必须使用提供程序吗?我应该从屏幕传递这个集合来筛选小部件树吗? 或者因为它在某种程度上是一个“常量集”(一旦创建就不会改变),还有另一种方法可以让它从应用程序的任何地方访问?

解决方法

这取决于。如果您的 App 只有 2 或 3 个屏幕,您可以将数据从屏幕传递到屏幕。如果你有更多的屏幕,我会推荐 InheritedWidget:

https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html

这不是唯一的方法,但这是我通常使用的方法。

您的 InheritedWidget 应如下所示(此代码未经测试)

class MyInheritedWidget extends InheritedWidget
 {
  final allValues;


    MyInheritedWidget(
     {
       Key? key,required this.allValues,required Widget child
      }): super(key: key,child: child);


  static MyInheritedWidget? of(BuildContext context)
   {
   return context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>();
   }
 }

然后您可以在 main() 中使用它:

void main() {
 ///You can generate your values here
 final theValues = generateYourValues();

  runApp(
    MaterialApp(
    debugShowCheckedModeBanner: false,routes: {
      '/': (context) => MyInheritedWidget
        (
          allValues: theValues,child: AppStarter()
        ),'/message': (context) => AnotherPage(),},),);
 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。