У меня есть класс, который расширяется от ChangeNotifier, он управляет состоянием одного виджета:
MainSection _section = MainSection.SETUP;
MainSection get section => _section;
set section(MainSection value) {
_section = value;
// some code
notifyListeners();
}
Как я уже сказал, я использую это для изменения состояния виджета:
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<MainBloc>.value(
value: _bloc,
child: Consumer<MainBloc>(builder: (context, bloc, child) {
_bloc = bloc;
var body;
switch (_bloc.section) {
case MainSection.SETUP:
body = _widgetFactory.createSetupWidget();
break;
case MainSection.WAITING:
body = Column(
children: <Widget>[
Expanded(
child: _widgetFactory.createWaitingWidget(),
),
_getBottomBar()
],
);
break;
Этот механизм работал нормально, так как я обновил приложение для работы с последней версией Flutter. Теперь в режиме отладки он работает нормально во всех случаях, но в режиме профиля или выпуска он не работает в определенной точке c в приложении, что означает, что он работает для некоторых изменений состояния, но для определенного изменения не работает . Я не знаю, что может на это повлиять.
Почему я говорю, что это не работает: я меняю переменную, вызываю notifyListeners (), но покупатель не получает уведомления.
I ' m с использованием зависимости от провайдера версии 4.3.1
Flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.17.5, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Android Studio (version 4.0)
[!] IntelliJ IDEA Community Edition (version 2019.2)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
[!] VS Code (version 1.47.3)
✗ Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)