首页 > 解决方案 > 在 dart 中动态定义或转换变量类型

问题描述

所以我有这个功能:

Future<void> syncedData(String dataType, Map<String, dynamic> data) async {
  // Open the Hive Box
  await _openBoxByName(dataType);

  // Put each data element in the Hive Box
  data.forEach((k, v) {
    Workout _v = v;
    // var _v = v as Workout; - kinda same result

    _putData(k, _v.toJson().toString(), dataType);
  });
}

我还有 3 个模型类WorkoutDaysYears.

为了让我.toJson()从 v 中获取方法,我需要这样做Workout _v = v;:但我不知道如何v动态转换类型Workout和模型类DaysYears

如果我不v明确地转换为锻炼类模型,dart 就不知道我的任何 WOrkouts 方法。

我尝试过这样的事情,但没有奏效:

if  (dataType == 'workout')  Workout _v = v;
if  (dataType == 'days')  Days _v = v;
if  (dataType == 'years')  Years _v = v;

谢谢

标签: flutterdart

解决方案


您可能应该将其编码为具有锻炼、天或年键值的 Map。我认为这将是非常好的 JSON。


推荐阅读