Flutter 供应商中的颤振使用延迟
我有一个表单,显示一个弹出窗口,里面有一条消息。 显示弹出窗口时,我执行计算,并根据计算状态更改弹出窗口中的消息 我的系统工作,但如果我想在更改消息之前应用延迟,则弹出窗口中的消息更改将不再执行。。。为什么? 呼叫我的屏幕:Flutter 供应商中的颤振使用延迟,flutter,dart,Flutter,Dart,我有一个表单,显示一个弹出窗口,里面有一条消息。 显示弹出窗口时,我执行计算,并根据计算状态更改弹出窗口中的消息 我的系统工作,但如果我想在更改消息之前应用延迟,则弹出窗口中的消息更改将不再执行。。。为什么? 呼叫我的屏幕: return MultiProvider( providers: [ ChangeNotifierProvider<FormCalculatorNotifier>( create: (BuildContext context) =&g
return MultiProvider(
providers: [
ChangeNotifierProvider<FormCalculatorNotifier>(
create: (BuildContext context) => FormCalculatorNotifier()
),
ChangeNotifierProvider<LoaderNotifier>(
create: (BuildContext context) => LoaderNotifier()
),
],
child: CalculatorScreen(),
);
返回多提供程序(
供应商:[
变更通知提供者(
create:(BuildContext上下文)=>FormCalculatorNotifier()
),
变更通知提供者(
create:(BuildContext上下文)=>LoaderNotifier()
),
],
子项:计算器屏幕(),
);
ma屏幕中调用弹出窗口的按钮
Expanded(
child: ButtonComponent.primary(
context: context,
text: AppTextButton.CALCUL,
onPressed: () async {
await _formProvider.submitForm(context);
if(_formProvider.state == FormProviderState.isSuccess){
// Here I load my popup
final _loaderProvider = Provider.of<LoaderNotifier>(context, listen: false);
showDialog(
context: context,
builder: (context) {
return DialogComponent.loadingPopUp(description: _loaderProvider.message);
},
);
//------------------------------------------
// Here I simulate calculations and change state and message for the popup
//------------------------------------------
_loaderProvider.state = LoaderState.isLoadingJsons;
await _loaderProvider.updateMessage();
}
},
),
),
扩展(
子项:ButtonComponent.primary(
上下文:上下文,
text:AppTextButton.CALCUL,
onPressed:()异步{
wait_formProvider.submitForm(上下文);
if(_formProvider.state==FormProviderState.isSuccess){
//在这里我加载我的弹出窗口
final _loaderProvider=Provider.of(上下文,侦听:false);
显示对话框(
上下文:上下文,
生成器:(上下文){
返回DialogComponent.loadingPopUp(说明:_loaderProvider.message);
},
);
//------------------------------------------
//在这里,我模拟计算并更改弹出窗口的状态和消息
//------------------------------------------
_loaderProvider.state=LoaderState.isLoadingJsons;
等待_loaderProvider.updateMessage();
}
},
),
),
弹出通知程序:
class LoaderNotifier with ChangeNotifier {
LoaderState state = LoaderState.isReady;
TimerService timerService = locator<TimerService>();
String message = "Start...";
LoaderNotifier();
Future<void> updateMessage() async{
//------------------------------------------
// Here I want a delay
// If I remove this my system works
await timerService.wait(2);
//------------------------------------------
print('update message');
if(state == LoaderState.isLoadingJsons){
message = "Loading files...";
}
notifyListeners();
}
}
class LoaderNotifier和ChangeNotifier{
LoaderState状态=LoaderState.isReady;
TimerService TimerService=locator();
字符串消息=“开始…”;
LoaderNotifier();
Future updateMessage()异步{
//------------------------------------------
//我想耽搁一下
//如果我删除这个,我的系统就会工作
等待时间服务。等待(2);
//------------------------------------------
打印(“更新消息”);
if(state==LoaderState.isLoadingJsons){
message=“正在加载文件…”;
}
notifyListeners();
}
}
这是我的等待服务:
class TimerService{
Future<void> wait(int seconds) async {
return Future.delayed(Duration(seconds: seconds), () => {});
}
}
类时间服务{
未来等待(整数秒)异步{
返回Future.delayed(持续时间(秒:秒),()=>{});
}
}