我正在使用提供程序作为状态管理。为了在多个文件之间使用值,我创建了一个如下的提供程序
class globalProvider with ChangeNotifier, DiagnosticableTreeMixin {
String uuID = "";
String get _uuID => uuID;
void changeuuID(id) {
uuID = id;
notifyListeners();
}
}
我正在更新值,如下所示
final uuidUpdate = Provider.of<globalProvider>(context, listen: false);
uuidUpdate.changeuuID(user.uid);
现在在另一个页面我需要打印uuID值。我尝试这样做
print(Provider.of<globalProvider>(context).uuID);
但它显示错误尝试从小部件树外部监听提供程序公开的值。
main.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => globalProvider()),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
home: LoginPage(),
),
),
);
}
4条答案
按热度按时间sg2wtvxw1#
您需要在小部件树中添加状态,如:
inkz8wg92#
在main.dart中添加ChangeNotifierProvider.值(值:全局提供程序),
确保你的类以大写字母开头,并让我知道箭头是否还存在。
hgqdbh6s3#
您需要使用
listen: false
将其打印出来,如下所示:utugiqy64#
您可以使用此软件包
获取_它:^7.2.0
请务必使用Upper cast并将以下代码粘贴到main.dart中
创建一个新dart文件并粘贴以下代码
而且我已经在主文件中使用了这个init()函数..只需导入库