notifyListeners() 未同时更新 UL



我是颤振的新开发人员,我使用颤振使应用程序致盲 所以我正在使用提供程序数据包,我需要在蓝牙状态更改时更改小部件 UL 我制作了执行此操作的代码,但在我的代码中,小部件 UL 在第二次运行应用程序后更改不会同时更改 我可以同时更改小部件吗

类更改通知程序

class Per extends ChangeNotifier {
bool BLu;
Per.initialize(){
CheckBluetooth();
}
CheckBluetooth()async{
await  FlutterBlue.instance.state.listen((state)async {
if(state==BluetoothState.on){
BLu=true;
notifyListeners();
}else{
BLu=false;
notifyListeners();
}
if (state==BluetoothState.off) {
BLu=false;
notifyListeners();
} else if (state==BluetoothState.on){
BLu=true;
notifyListeners();
}
});
}

类小部件

class _HomeState extends State<Hom> {
@override
Widget build(BuildContext context) {
final modal =Provider.of<Per>(context);
if(modal.BLu!=true){
return Center(child: Text('NO'),);
}else{
return Center(child: Text('YES'),);
}

}
}

多提供商

return MultiProvider(providers: [
ChangeNotifierProvider.value(value:AuthProvider.initialize()),
ChangeNotifierProvider.value(value:Per.initialize()),
])

您实际上需要重新运行CheckBluetooth()函数。目前它只从Per.initialize()运行一次。

您可以通过调用modal.CheckBluetooth();来执行此操作。然后,它将执行该函数,并在完成后通过提供程序更新 UI。 提供程序不会继续运行其功能,以防万一发生更改,您必须手动执行此操作。

相关内容

  • 没有找到相关文章

最新更新