传递 Map 对象而不引用 Dart 中的原始对象

问题描述 投票:0回答:1

我正在开发一个 Flutter/Dart 应用程序,我需要将 Map 对象从一个屏幕传递到另一个屏幕。但是,我想确保原始 Map 对象保持不变,并且对第二个屏幕上传递的 Map 对象进行的任何修改都不会影响第一个屏幕上的原始 Map 对象。原始Map对象包含JSON init,因此它的结构不清楚。

地图原始地图 = { '问题': '你叫什么名字', }; 地图修改Map = { '问题': '你叫什么名字', '答案': 'XYZ', };

我考虑过使用 copyWith 等方法或从原始 Map 创建一个新的 Map 对象。 地图modifiedMap = new Map.from(originalMap); 地图修改后的Map = JSON.decode(JSON.encode(originalMap));

任何指导或示例将不胜感激。 谢谢!

flutter dart pass-by-value
1个回答
0
投票

比起地图,我更喜欢课程。在类中,您可以通过在其构造函数上添加

const
修饰符来使类不可变,然后创建
copyWith
函数。那么如果您想轻松管理数据流,我建议您进行状态管理,以便您可以跨屏幕共享数据并轻松修改它们。 想象一下模型视图控制器。你有 Model 类,即
QuestionAnswerModel
,你有
QuizController
来控制 UI,你有
QuizQuestionView
QuizDetailView
访问一个控制器 (
QuizController
)

如果你不使用地图的话会容易得多。 无论如何,您可能对代码生成感兴趣(https://pub.dev/packages/freezed这是我最喜欢的用于生成模型类的代码生成),这将允许您自动生成诸如

copyWith
之类的样板文件

© www.soinside.com 2019 - 2024. All rights reserved.