使用changeNotifier颤振不改变小部件的外观

时间:2020-11-04 19:11:58

标签: flutter dart

我的页面上有一个表格。 当我填写表格时,如果有效,则会出现一个加载弹出窗口,然后我开始执行计算。根据计算状态,加载弹出窗口上的消息将更改。

我正在尝试在提供程序中执行一个功能,该功能将根据弹出窗口的状态更改消息。 当我打印值时,它们可以正确显示,但我的消息在小部件中没有改变

我怎么称呼我的屏幕:

return MultiProvider(
  providers: [
    ChangeNotifierProvider<FormCalculatorNotifier>(
        create: (BuildContext context) => FormCalculatorNotifier()
    ),
    ChangeNotifierProvider<LoaderNotifier>(
        create: (BuildContext context) => LoaderNotifier()
    ),
  ],
  child: CalculatorScreen(),
);

在屏幕上,我如何调用弹出窗口和计算:

Expanded(
  child:  ButtonComponent.primary(
    context: context,
    text: AppTextButton.CALCUL,
    onPressed: () async {
      await _formProvider.submitForm(context);
      if(_formProvider.state == FormProviderState.isSuccess){
        // --------------------------------------
        // Here I call the popup with the message variable 
        DialogComponent.loadingPopUp(context: context, description: _loaderProvider.message);

        // --------------------------------------
        // Here I try to change the popup message because I have my calculations
        _loaderProvider.state = LoaderState.isLoadingJsons;
        await _loaderProvider.updateMessage();
      }
    },
  ),
),

弹出通知器:

class LoaderNotifier with ChangeNotifier {

  LoaderState state = LoaderState.isReady;
  String message = "Start...";

  Future<void> updateMessage() async{
    print('update message');
    if(state == LoaderState.isLoadingJsons){
      message = "Loading files...";
    }
    notifyListeners();
  }
}

编辑:我刚刚看到我的问题是我从DialogComponent调用了updateMessage函数之后

如果我要遵循的逻辑是研究表格是否适合显示弹出窗口,然后执行计算,并根据计算结果更改弹出窗口的消息,该怎么办,因为之后我将调用updateMessage函数?

0 个答案:

没有答案