跨多个页面保留提供程序数据不起作用

2023-11-27

我在用着Provider在我的 flutter 应用程序中,当我进入新页面时,提供给Provider第 1 页的内容无法在第 2 页中访问。

我所理解的方式Provider有效的一点是,有一个中心位置可以存储所有数据,并且可以在应用程序中的任何位置访问该数据。所以在我的应用程序中,如下所示,ToDoListManager是存储所有数据的地方。如果我将数据设置为Page 1,那么我将能够访问该数据Page 2,反之亦然。

如果这是不正确的,那么哪一部分是错误的?为什么它在我的应用程序中不起作用?

这是代码

Page 1

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      builder: (context) => ToDoListManager(),
      child: Scaffold(
        appBar: AppBar(
          title: Text('Cool Project'),
        ),
        body:e ToDoList(),
      ),
    );
  }
}

class ToDoList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final toDoListManager = Provider.of<ToDoListManager>(context);

    return ListView.builder(
      itemCount: toDoListManager.toDoList.length,
      itemBuilder: (context, index) {
        return GestureDetector(
          onTap: () {
            Navigator.push(context,
                MaterialPageRoute(builder: (context) => Details(index)));
          },
          child: Text(toDoListManager.toDoList[index]),
        );
      },
    );
  }
}

Page 2

class Details extends StatelessWidget {
  final int index;

  Details(this.index);

  @override
  build(BuildContext context) {
    return ChangeNotifierProvider(
      builder: (context) => ToDoListManager(),
      child: Scaffold(
          appBar: AppBar(
            title: Text('Details Bro'),
          ),
          body: AppBody(index)),
    );
  }
}

class AppBody extends StatelessWidget {
  final int index;

  AppBody(this.index);

  @override
  Widget build(BuildContext context) {
    final toDoListManager = Provider.of<ToDoListManager>(context);
    print(toDoListManager.toDoList);

    return Text(toDoListManager.toDoList[1]);
  }
}

待办事项列表提供者

class ToDoListManager with ChangeNotifier {
  List<String> _toDoList = ['yo', 'bro'];

  List<String> get toDoList => _toDoList;

  set toDoList(List<String> newToDoList) {
    _toDoList = newToDoList;
    notifyListeners();
  }
}

您有 2 个选择:

  1. 放置您的ChangeNotifierProvider高于你的MaterialApp这样你们任何人都可以访问Navigator routes.

  2. 保持你的Home小部件按原样但是当使用Navigator提供原经理。

onTap: () {
    Navigator.push(
        context,
        MaterialPageRoute(
            builder: (context) {
                return Provider<ToDoListManager>.value(
                    value: toDoListManager,
                    child: Details(index),
                );
            },
        ),
    );
},

使用这两种方法,您不需要创建新的ChangeNotifierProvider在您的详细信息屏幕中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨多个页面保留提供程序数据不起作用 的相关文章

  • Firebase Cloud Function:& Flutter:无法在模拟器上使用 https 可调用函数 [firebase_functions/unavailable] 不可用

    我试图从我的 flutter 应用程序中使用模拟器调用 HTTPS 可调用函数 但它似乎不起作用 我调用该函数后 总是需要大约 5 秒的时间并返回错误 如果我将该功能部署在服务器上 它就可以完全正常工作 这是我的功能 exports try
  • Dart:使用 html 导入时隔离不起作用

    我在 Dart 中发现了这种非常奇怪和不幸的行为 当我在主文件中导入 dart html 时 我的 Isolate 停止工作 使用我的文件 isolate dart main print BAM 这会打印 BAM import dart c
  • 当 TextFormField 聚焦时如何隐藏错误外观

    我在用着TextFormField用于表单和自定义验证器方法返回错误消息 我试图隐藏默认错误消息和错误边框TextFormField当文本字段获得焦点时 TextFormField focusNode focusNode validator
  • 是否可以从图像中获取图像 GPS 位置坐标?

    我正在构建一个 Flutter 应用程序 用户可以在其中发布照片及其位置 用户可以从相机或图库中获取图片 如果用户从相机拍照 我可以使用设备的 GPS 位置来设置图片的位置 我正在尝试根据图片的元数据获取图片的 GSP 位置 但是 我还没有
  • 如何让按钮选择所有 Flutter 复选框?

    问题是我无法让按钮选择所有复选框 因为我使用的是自动生成的复选框列表 由于我创建了一个带有列表项的类 WordBlock 它是一个带有复选框的容器 每个复选框都有自己的选中值 因此我无法以任何方式选择所有内容 如果我通过构造函数设置选中的值
  • Flutter/Dart - () {} 和 () => {} 之间的区别

    在 Flutter Dart 中 示例有时显示粗箭头 有时不显示 以下是示例 RaisedButton onPressed setState myTxt Text Changed 在其他地方你会看到 void main gt runApp
  • flutter 动态查询 Firebase Firestore

    我正在创建一个视图 用户可以在其中选择多个元素 然后 通过在按钮上执行 onTap 这应该生成查询并在其他视图上显示查询结果 我的挑战是确保我获得用户选择的所有条件 然后使用多个字段值构建查询 我应该执行一个查询 然后对该查询进行查询等等
  • 如何检测颤振中的滑动

    我尝试使用 flutter 的滑动检测器插件来实现向右滑动导航到新屏幕 但它不起作用 不会引发任何错误 并且在调试它时永远不会命中断点 我研究了 GestureDector 但我不确定它是否适用于向右滑动的场景 我们希望它在屏幕上的任何位置
  • Flutter java.lang.module.FindException:找不到模块 java.se.ee

    当我尝试在 android studio 中运行默认的 flutter 应用程序时遇到此错误 Launching lib main dart on sdk gphone x86 arm in debug mode Running Gradl
  • 如何在flutter中自定义Steppers并通过内容中的小部件进行控制?

    我在视图中创建了一系列步骤 我想使用 Flutter 中的 Stepper Widget 来实现这些步骤 不过 我希望这些步骤由内容中的小部件触发 而不是继续和取消 我尝试使用controlsBuilder 但是它为每个步骤创建相同的控件小
  • [FLUTTER]滚动更改选项卡[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想构建这个用户界面 其中选项卡在某些滚动点上发生变化 请告诉我应该如何处理 是否有任何可用的包 UI LINK https www
  • 有没有办法直接在 Dart 中的类上添加静态扩展方法?

    我读过一个comment https stackoverflow com questions 3629368 way to add an extension method comment3813313 3629368关于 C 的类似问题 扩
  • Flutter in_app_purchase 未在 Android 上加载

    我确实使用 https pub dev packages in app purchase https pub dev packages in app purchase 以下代码在IOS真机上完美运行 但在Android上无法连接到Googl
  • 如何关闭 Google Analytics for Firebase 中的数据阈值

    我需要帮助将 firebase 分析集成到我的 flutter 项目中 编写了一些自定义事件并希望使用此事件中的数据 这就是为什么我创建指标和维度但它不起作用 因为我获得了数据阈值 并收到了此消息 当启用 Google 信号并且您在指定日期
  • 将颤动网格视图中的最后一行项目居中

    我有一个要输出到的动态项目列表GridView countmainAxisCount 为 2 2 列网格 的构造函数 如果列表长度为奇数 则最后一行将仅包含单个项目 我希望这个单个项目位于屏幕中央 而不是与第一列对齐 这可以做到吗 考虑到有
  • 颤振:音频服务。如何播放本地文件?

    我想播放本地文件的播放列表 在android上 没有问题 我可以在Mediaitem id 中添加本地文件并且它可以正常播放 但在 iOS 上它不起作用 我收到这个错误 VERBOSE 2 ui dart state cc 186 Unha
  • dart 中的 DateFormat 错误:“尝试在位置 10 处读取 2020 年 4 月 17 日的 -YYYY”

    如何将像 17 04 2020 这样的 dd MM yyyy 格式的字符串转换为 dart flutter 中的 DateTime 对象 formatter new DateFormat dd MM YYYY formatter parse
  • 我在浏览时无法预览 vscode 上的图标?

    如图所示 我正在浏览图标 但没有显示任何图标 新的更新是否有变化 或者我在这里遗漏了一些东西 gt 它曾经在我浏览时显示图标 当您将鼠标悬停在工具提示的右侧时 应该会出现一个箭头 指出 阅读更多 只需单击一次 因此图标预览应该始终出现
  • Flutter:防止抽屉关闭

    Flutter 中是否可以防止关闭抽屉 我在用endDrawer作为网络应用程序中的表单 我已禁用滑动打开功能 并且我还希望只允许通过按钮关闭它 这样用户就不会通过单击外部意外地关闭它 但是我看不到任何布尔值 例如防止解雇或任何实施方式Wi
  • getApplicationDocumentsDirectory 在 flutter 桌面(Windows)上不起作用

    如何在 Windows 上的 flutter 桌面上保存和打开文件 getApplicationDocumentsDirectory 不适用于 Windows 应用程序的 flutter 桌面 Future

随机推荐

  • C++,使用#if TRUE 条件指令

    当使用像这样的语句时 if TRUE 我应该期待发生什么 如有解释 将不胜感激 我明白如何 if 1有效 但它给出了完全地我的代码中的结果与使用不同 if TRUE 我明白 if是一个条件指令 以及它意味着什么 这只是TRUE or FAL
  • Pipenv 无法识别 Pyenv 版本?

    我安装了 Python 3 7 0 但对于特定的 Django 项目 我想使用 Python 3 6 5 使用pyenv为此 我在 Macbook Pro 上运行了brew install pyenv 其次是pyenv install 3
  • 从父级导航嵌入的 Google Apps 脚本 iFrame

    我有一个多页网络应用程序 我希望登录后 用户可以看到他的队友列表并标记他们的出勤状态 我的问题是我无法在 iFrame 中显示这一点 而不是在 google 脚本原始框架中显示这一点 例如 我想将其 iFrame 到我自己的网页上 这两天我
  • 使用 ASP.NET MVC 2 上传文件的最佳方式是什么?

    上传可变大小的文件 对于 ASP NET MVC 2 应用程序文件系统来说非常大或非常小 的最佳方法是什么 到目前为止我的理解是这样的 人们似乎有两种处理这个问题的方法 假设文件可能非常大或非常小 1 在控制器操作中处理上传Request
  • jQuery:同一事件有多个处理程序

    如果我将两个事件处理程序绑定到同一元素的同一事件 会发生什么情况 例如 var elem elem click elem click 最后一个处理程序 获胜 还是两个处理程序都会运行 两个处理程序都将运行 jQuery 事件模型允许在一个元
  • Angular 4:日期管道,UTC 时间到本地时间:如何告诉 Angular 当前时区?

    我们将 Angular 4 与用 net core 编写的 MVC 应用程序一起使用 使用 SignalR 服务接收数据 集线器是用 C 编写的 数据库提供 Datetime2 7 字段 T SQL 收到的内容如下所示 对于日期字段 due
  • SQL FileStream + Entity Framework 存储大文件

    当我想将文件存储在文件流列中时 我总是需要将整个二进制文件读入内存 using MemoryStream memoryStream new MemoryStream sourceStream CopyTo memoryStream bina
  • 在 PHP 中解析 javascript 数组

    我似乎不知道如何将 JS 数组放入 PHP 中 我必须处理的事情看起来像这样 var arrLow e 495864 rank 8678591 rankmove p img src up php uStyle 144 UP 495864 e
  • “Create VIEW”必须是批处理中的唯一语句

    我有以下 SQL ALTER PROCEDURE dbo usp gettasks ID varchar 50 AS declare PDate Date WHILE DATEPART DW PDate 1 OR DATEPART DW P
  • 有没有办法从 C# 调用 RDTSC 汇编指令?

    我想要为我的 C 应用程序提供一个非常高分辨率的计时器 我想访问 RDTSC 汇编指令 有没有办法做到这一点 编辑 我正在移植一些 C 代码并尝试保留与原始代码相同的功能 我可能会切换到更 NET 的东西 但想要评估 RDTSC 指令 以便
  • 下一个js图像组件错误“url”参数有效但上游响应无效

    我正在从 tmdb api 获取数据 但是图像未加载 所以我在新选项卡中打开图像 然后它显示 url 参数有效 但上游响应无效那么如何解决这个问题 您是否已将图像的域添加到下一个配置中 下面是一个例子 next config js modu
  • 使用 AngularJS 和 Asp.Net MVC 通过 FormData 上传多个文件

    我想使用 Angular js 上传多个文件 为此我使用 FormData 这是我的表单字段
  • 是否可以更改虚拟内存页面大小?

    是否可以更改虚拟内存页面大小 我问这个是因为在维基百科上 MMU 文章的 X86 64 部分 它讨论了不同的页面大小 如果页面大小确实可以改变 那么如何改变呢 在 x86 64 上 您可以在以下命令的帮助下显式请求 2 MiB 页面 而不是
  • 如何在 App Engine Nodejs Standard 上访问内存缓存

    如何从node js标准环境访问memcached 该文档显然没有提到 App Engine 内存缓存可用于 Node JS 标准环境 至少目前没有 没有Node JS语言选项卡中内存缓存概述 page s 没有Caching Applic
  • NumPy 读取文件并动态过滤行

    我在 CSV 文件中写入了大量数字 只需加载该数组的一部分 从概念上讲我想打电话np genfromtxt 然后对结果数组进行行切片 但是 该文件太大 RAM 可能无法容纳 相关行的数量可能很小 因此不需要解析每一行 MATLAB有函数te
  • EXTENDS 挑战:预处理器函数宏和类类 oop

    背景 我一直在使用 C 预处理器来管理和 编译 具有多个文件和构建目标的半大型 JavaScript 项目 这提供了对 C 预处理器指令的完全访问 例如 include define ifdef等来自 javascript 的内容 这是一个
  • 使用 Xcode 8 创建通用框架?

    我公司的 iOS 框架旨在在真正的 iOS 设备上运行 所述框架当前作为 Xcode 项目中的附加目标生成 该项目也生成应用程序 这使得调试框架相对容易 我们最近收到了要求让它在模拟器中也能运行的请求 我现在可以让它这样做 下一步是创建一个
  • 使用 Python MoviePY 连接视频太慢

    我正在使用 MoviePY 加入 50 多个或更多 1 2 3 分钟的视频 但它只给了我 20 个小时 尽管我有 64 GB 内存 i7 和 GTX 670 虽然不是顶级但还算合理 无论如何我可以加快这个过程吗 padding 10 pad
  • 解释 dumpsys cpuinfo

    我正在寻找 android shell 中命令 dumpsys cpuinfo 结果的解释 dumpsys cpuinfo Load 17 78 16 97 16 29 CPU usage from 35983ms to 21604ms a
  • 跨多个页面保留提供程序数据不起作用

    我在用着Provider在我的 flutter 应用程序中 当我进入新页面时 提供给Provider第 1 页的内容无法在第 2 页中访问 我所理解的方式Provider有效的一点是 有一个中心位置可以存储所有数据 并且可以在应用程序中的任