我希望在应用程序顶部的MultiProvider-Widget中创建一个全球provider,如下所示:

 ChangeNotifierProvider(
          create: (context) => ThemeProvider()
            ..init(
              context: context,
              initialThemeMode: widget.themeMode,
            ),
        ),

如您所见,我还呼叫..init(来设置初始数据.然而init就是not actually called when opening the app.对于此Provider ,它仅为called after I make the first call,例如用它设置 colored颜色 ,如下:

  Container(
    height: 50,
    color: Provider.of<ThemeProvider>(context).color,
  ),

这是预期行为吗?

推荐答案

只有在我第一次与此Provider 通话后才会被调用.这是预期行为吗?

是的,see documentation for provider:

注:

当使用提供者的create/update回调时,值得注意的是,默认情况下该回调是懒惰调用的.

这意味着,在请求该值至少一次之前,不会调用create/update回调.

如果您想使用lazy参数预计算一些逻辑,可以禁用此行为:

MyProvider(
  create: (_) => Something(),
  lazy: false,
)

Flutter相关问答推荐

如何在列表磁贴上添加行

在Flutter中为不受约束的小部件制作动画

FCM通知显示两次通知(&A)

有没有一种正确的方法可以通过上下滑动在两个小部件(在我的情况下是应用程序栏)之间切换?

Flutter 数独网格

使用持久的侧边菜单和顶部栏在Ffltter Web应用程序中的页面之间导航

Flutter 渲染HTML和数学(LaTeX和Katex)

如何使 dart 函数变得通用?

Dart:未捕获错误:RangeError(索引):索引超出范围:索引应小于 7:7

如何更改 DropDownMenu 的显示方向?

如何制作flutter showDialog、AlertDialog屏障 colored颜色 渐变

使用 riverpod 提供 GoRouter 实例的正确方法是什么?

Flutter - 如何将按钮对齐到行的右侧

flutter 中 // 和 /// 有什么区别

我无法从 Cloud firestore 访问文档字段并在 statefulwidget 类中显示它

String类型不是Widget类型的子类型?在dart 中

在 Android 12+ 中,REST API 调用在 flutter 中非常慢,在 WiFi 中需要 10 秒,而在移动数据中不到一秒

从物理设备 Flutter 中移除 USB 后启动画面不可见?

Flutter 中的 Firebase 后台消息处理程序产生重复的隔离并运行应用程序两次

Flutter 小部件中的视图和逻辑分离