小编ket*_*t-c的帖子

如何正确使用flutter Riverpod在不同文件的widget之间共享数据?

当小部件位于同一文件中时,我能够在小部件之间共享数据,但是当小部件位于不同文件中时,用户界面不会重建,而且我似乎没有得到正确的结果。

请检查下面的代码,看看我的不足之处。(我添加了图像以便于阅读和文本代码以便于 CTRL C - CTRL V)

客观的

我正在尝试在不同文件中的多个小部件之间共享数据图片在这里

但它不会通知其他小部件/重建当点击第 45 行的按钮时,第 44 行的文本成功更改,但第 26 行的屏幕没有更改

//-------------navigation_provider.dart----------------//

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class NavigationProvider extends ChangeNotifier{

bool showUserProfile = true;
  
void toggleProfile(toggle){
showUserProfile = toggle;
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)

//--------------desktop_scaffold.dart----------------//

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:premiumpeaches/providers/navigation_provider.dart';
import 'package:flutter/material.dart';

final navigatorProvider = ChangeNotifierProvider((ref) => NavigationProvider());
class DesktopScaffold extends ConsumerWidget {
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    return SizedBox(
      child: ref.watch(navigatorProvider).showUserProfile == true ? UserProfileComponent() : ProfileSettingsComponent()
    )
  
}
Run Code Online (Sandbox Code Playgroud)

//--------------user_profile_component.dart----------------// …

state-management dart flutter riverpod flutter-riverpod

3
推荐指数
1
解决办法
952
查看次数