简体   繁体   English

Riverpod 未在 state 更改时更新 UI 小部件

[英]Riverpod is not updating UI widget on state change

main.dart主要.dart

void main() {
  runApp(ProviderScope(child: MyApp()));
}

class MyApp extends ConsumerWidget {
  MyApp({Key? key}) : super(key: key);
  final _appProvider =
      ChangeNotifierProvider<AppProvider>((ref) => AppProvider());

  final _profileProvider = ChangeNotifierProvider<ProfileProvider>((ref) {
    return ProfileProvider();
  });

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    AppProvider appProvider = ref.watch(_appProvider);
    ProfileProvider profileManager = ref.watch(_profileProvider);
    print(appProvider.appLocale);
}

appProvider.dart appProvider.dart

class AppProvider extends ChangeNotifier {
  Locale? _appLocale = const Locale('en');

  Locale get appLocale => _appLocale ?? const Locale("en");

  static const supportedLanguage = [Locale('en', 'US'), Locale('km', 'KH')];
    
      void changeLanguage(Locale type) async {
        _appLocale = type;

   notifyListeners();
  }
}

在此处输入图像描述

// when i log value of _appLocale here, I can see the update value based on the state change. // 当我在这里记录 _appLocale 的值时,我可以看到基于 state 变化的更新值。 but it does not re render UI widgeet.但它不会重新呈现 UI 小部件。

I fixed it by declaring global provider, remove any deplicated provider, same name, in other files.我通过声明全局提供者来修复它,删除其他文件中任何重复的提供者,同名。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM