Flutter 在创建时为提供者调用 init 函数

问题描述 投票:0回答:1

我想要一个全局的

provider
,我在应用程序顶部的
MultiProvider
小部件中创建它,如下所示:

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

如你所见,我也在调用

..init(
来设置初始数据。然而,
init
在打开应用程序时实际上并未被调用。仅在我与该提供商进行第一次通话后才会被调用,例如像这样设置颜色: Container( height: 50, color: Provider.of<ThemeProvider>(context).color, ),

这是预期的行为吗?
    

flutter dart provider
1个回答
0
投票

是的,

请参阅提供商的文档

注意: 当使用提供者的

create
/

update

 回调时,值得注意的是,默认情况下该回调是延迟调用的。
这意味着,在至少请求一次该值之前,不会调用 
create
/
update
 回调。
如果您想使用 
lazy
 参数预先计算一些逻辑,可以禁用此行为:
MyProvider(
 create: (_) => Something(),
 lazy: false,
)

© www.soinside.com 2019 - 2024. All rights reserved.