【问题标题】:flutter toggle a state with provider state management flutter颤动使用提供者状态管理颤动切换状态
【发布时间】:2022-01-20 14:40:13
【问题描述】:

我正在尝试实现一个提供程序,以便在状态更改时在不同的小部件之间呈现。

在这里,我在提供者控制器中定义了一个名为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 返回未定义。

void main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (_) => UserNotifier()),
      ],
      child: const MyApp(),
    ),
  );
}

【问题讨论】:

    标签: flutter dart provider


    【解决方案1】:

    第一个问题即将发布,因为 isExpandedtoggleContainer() 内部。它将是班级级别的。

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

    【讨论】:

    • 您可以查看this以了解有关提供商的更多信息。
    • 好的,谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 2020-06-12
    • 2023-01-31
    • 1970-01-01
    • 2020-11-28
    • 2011-11-19
    • 2021-11-10
    • 2020-10-23
    • 2022-01-18
    相关资源
    最近更新 更多