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(),
    ),
  );
}

第一期来了,因为 isExpandedtoggleContainer() 里面。它将达到 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
      ),
    );
  },
)