我有(简化)2个块,其中一个对应用程序是全局的,位于窗口小部件树的顶部(用户管理),一个对那个树中的页面(UI管理)。现在,我想根据用户输入从pageBloc更新userBloc中的数据,这不会影响任何直接呈现(直接)。
我知道方法
if (userBloc.state is AppSettled)
myPageUserVar = (userBloc.state as AppSettled).myUserVar;
获取数据,我知道如何通过触发事件获取数据。但是,我不知道如何处理事件而不必在上级userBloc中释放状态更改。有人有想法吗?
我可以在没有任何yield语句的情况下简单地向mapEventToState
添加一个条件,还是会引起任何问题(示例中从未出现过类似的情况)
答案 0 :(得分:1)
您可以通过依赖项注入将一个集团提供给另一个集团,例如:
Set "MyFile=VMs.txt"
rem VMs.txt contains IPs of the machines
for /f "usebackq delims=" %%a in ("%MyFile%") do call :compare
goto :EOF
:compare
for %%j in (.) do for /f "tokens=2 delims==" %%i in ('wmic /node:"%%a" path Win32_VideoController get CurrentVerticalResolution /value ^| find "="') do set "height=%%i"
echo(%height%
此处的更多信息:bloc-to-bloc-communication
另一种方法是监听class PageBloc extends Bloc {
final UserBloc userBloc;
StreamSubscription userBlocSubscription;
MyBloc(this.userBloc) {
userBlocSubscription = userBloc.listen((state) {
// React to state changes here.
// Add events here to trigger changes in PageBloc.
});
}
@override
Future<void> close() {
userBlocSubscription .cancel();
return super.close();
}
}
中的状态变化,并像这样通知您的pageBloc
:
userBloc