flutter 使用提供者状态管理 flutter 切换状态
flutter toggle a state with provider state management flutter
我正在尝试实现一个提供程序以在状态更改时在不同的小部件之间呈现。
在这里,我在提供程序控制器中定义了一个名为 toggleContainer()
的函数。
class UserNotifier extends ChangeNotifier {
toggleContainer() {
bool isExpanded = false;
if (isExpanded == false) {
isExpanded = true;
} else {
isExpanded = false;
}
notifyListeners();
}
}
然后,在应用程序中,我如下声明 useNofifier
并实现函数
Widget build(BuildContext context) {
UserNotifier userNotifier = Provider.of<UserNotifier>(context);
return Scaffold(
body: Container(
padding: EdgeInsets.only( ...
GestureDetector(
onTap: () {
userNotifier.toggleContainer();
},
child: Container(
child: userNotifier.isEpanded ? Text("close") : Text('open'), //isExpanded is undifened
),
),
所以现在,我没有正确实施并且 isEpanded
returns 未定义。
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => UserNotifier()),
],
child: const MyApp(),
),
);
}
第一期来了,因为 isExpanded
在 toggleContainer()
里面。它将达到 class 级别。
class UserNotifier extends ChangeNotifier {
bool isExpanded = false;
toggleContainer() {
isExpanded = !isExpanded;
notifyListeners();
}
}
下一期是打字错误,将是child: userNotifier.isExpanded
。
但在这种情况下建议使用Consumer
小部件
Consumer<UserNotifier>(
builder: (context, value, child) {
return GestureDetector(
onTap: () {
value.toggleContainer();
},
child: Container(
child: value.isExpanded
? const Text("close")
: const Text('open'), //isExpanded is undifened
),
);
},
)
我正在尝试实现一个提供程序以在状态更改时在不同的小部件之间呈现。
在这里,我在提供程序控制器中定义了一个名为 toggleContainer()
的函数。
class UserNotifier extends ChangeNotifier {
toggleContainer() {
bool isExpanded = false;
if (isExpanded == false) {
isExpanded = true;
} else {
isExpanded = false;
}
notifyListeners();
}
}
然后,在应用程序中,我如下声明 useNofifier
并实现函数
Widget build(BuildContext context) {
UserNotifier userNotifier = Provider.of<UserNotifier>(context);
return Scaffold(
body: Container(
padding: EdgeInsets.only( ...
GestureDetector(
onTap: () {
userNotifier.toggleContainer();
},
child: Container(
child: userNotifier.isEpanded ? Text("close") : Text('open'), //isExpanded is undifened
),
),
所以现在,我没有正确实施并且 isEpanded
returns 未定义。
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => UserNotifier()),
],
child: const MyApp(),
),
);
}
第一期来了,因为 isExpanded
在 toggleContainer()
里面。它将达到 class 级别。
class UserNotifier extends ChangeNotifier {
bool isExpanded = false;
toggleContainer() {
isExpanded = !isExpanded;
notifyListeners();
}
}
下一期是打字错误,将是child: userNotifier.isExpanded
。
但在这种情况下建议使用Consumer
小部件
Consumer<UserNotifier>(
builder: (context, value, child) {
return GestureDetector(
onTap: () {
value.toggleContainer();
},
child: Container(
child: value.isExpanded
? const Text("close")
: const Text('open'), //isExpanded is undifened
),
);
},
)