我在我的应用程序中使用了provider和flutter_bluc。现在,我正在为这种情况而苦苦挣扎:将新状态传递给BlocBuilder,该状态将重建Widget Tree UI的一部分。我想要的是还更新我的bottomNavigationVisibility,它扩展了ChangeNotifier。。我使用此 bottomNavigationVisibility来更新小部件树的另一部分。
这样,我可以轻松实现UIViews IMHO的良好分离逻辑。但是,现在我总是会收到此错误:
在构建过程中调用setState()或markNeedsBuild()
以下是代码示例:
@override
Widget build(BuildContext context) {
final bottomNavigationVisibility =
Provider.of<ProviderBottomNavigation>(context);
...
Container(
height: 60.0,
child: BlocBuilder<SoundsblocBloc, SoundsblocState>(
condition: (previousState, state) {
if (previousState is InitialSoundsblocLoading) return true;
return false;
}, builder: (context, state) {
if (state is InitialSoundsblocLoaded) {
if (state.sounds
.where((sound) => sound.focused)
.toList()
.isEmpty) {
bottomNavigationVisibility.isVisibleT(false);
} else {
bottomNavigationVisibility.isVisibleT(true);
}
}
return ListView.builder(
itemCount: listOfSounds.length,
...
})),
class ProviderBottomNavigation extends ChangeNotifier {
bool _isVisible = false;
bool get isVisible => _isVisible;
void isVisibleT(bool val) {
_isVisible = val;
notifyListeners();
}
}
在返回特定的整体状态后,如何更改代码以从小部件B中更新小部件A中的ChangeNotifier?
另外,我是否可能会出错,并且将Provider与flutter_bloc一起用于单独的UI部件是很糟糕的组合?