这可能是一个错误,因为 Provider 不会自动更新依赖项
This is likely a mistake, as Provider will not automatically update dependents
每当我将提供程序添加到 MultipleProvider 时,它只会显示这个奇怪的错误,在花费 4 小时后无法解决。
main.dart
MultiProvider(
providers: [
Provider<HandleImageSelectionModel>(
create: (_) => HandleImageSelectionModel()),
],
child: MaterialApp(
title: 'Flutter Demo',
initialRoute: '/',
onGenerateRoute: RouteGenerator.generateRoute,
theme: ThemeData(
primarySwatch: Colors.blue,
),
),
);
供应商class
import 'package:flutter/foundation.dart';
class HandleImageSelectionModel extends ChangeNotifier {
bool isSelectionModeEnabled = false;
HandleImageSelectionModel();
toggleSelectionMode() {
isSelectionModeEnabled = !isSelectionModeEnabled;
notifyListeners();
}
}
改变状态
Provider.of<HandleImageSelectionModel>(context)
.toggleSelectionMode();
正在尝试消费
Consumer<HandleImageSelectionModel>(
builder: (context, isEnabled, child) {
print(isEnabled);
return Positioned(
child: Align(
alignment: Alignment.topRight,
child: CircularCheckBox(
value: true,
materialTapTargetSize:
MaterialTapTargetSize.padded,
onChanged: (bool x) {}),
),
);
},
)
当您传递的 class 是 ChangeNotifier
时,您正在使用 Provider
。
改用ChangeNotifierProvider
:
ChangeNotifierProxyProvider<HandleImageSelectionModel>
每当我将提供程序添加到 MultipleProvider 时,它只会显示这个奇怪的错误,在花费 4 小时后无法解决。
main.dart
MultiProvider(
providers: [
Provider<HandleImageSelectionModel>(
create: (_) => HandleImageSelectionModel()),
],
child: MaterialApp(
title: 'Flutter Demo',
initialRoute: '/',
onGenerateRoute: RouteGenerator.generateRoute,
theme: ThemeData(
primarySwatch: Colors.blue,
),
),
);
供应商class
import 'package:flutter/foundation.dart';
class HandleImageSelectionModel extends ChangeNotifier {
bool isSelectionModeEnabled = false;
HandleImageSelectionModel();
toggleSelectionMode() {
isSelectionModeEnabled = !isSelectionModeEnabled;
notifyListeners();
}
}
改变状态
Provider.of<HandleImageSelectionModel>(context)
.toggleSelectionMode();
正在尝试消费
Consumer<HandleImageSelectionModel>(
builder: (context, isEnabled, child) {
print(isEnabled);
return Positioned(
child: Align(
alignment: Alignment.topRight,
child: CircularCheckBox(
value: true,
materialTapTargetSize:
MaterialTapTargetSize.padded,
onChanged: (bool x) {}),
),
);
},
)
当您传递的 class 是 ChangeNotifier
时,您正在使用 Provider
。
改用ChangeNotifierProvider
:
ChangeNotifierProxyProvider<HandleImageSelectionModel>