flutter - Dart 中通用 List 对象的运行时类型检查

标签 flutter dart

我正在尝试根据 Flutter 中的类型进行流量控制,我遇到了这个。这正常吗?

List<Widget> getDetailDisplayWidget() {
  var retval = List<Widget>();

  List<String> test = <String>["something"];
  print(test.runtimeType is List);
  print(test.runtimeType is List<String>);
  print(test.runtimeType == List);

  this._databaseModel.forEach((key, value) {
    switch (value.runtimeType) {
      case String:
        retval.add(SingleValueDetail(
            question: _questionModel[key]["question"],
            label: _questionModel[key]["label"],
            variable: _questionModel[key]["variable"],
            key: key));
        break;
      case Timestamp:
        retval.add(DateValueDetail(
            question: _questionModel[key]["question"],
            variable: _questionModel[key]["variable"],
            key: key));
        break;
      case List:
        retval.add(ListValueDetail(
            question: _questionModel[key]["question"],
            label: _questionModel[key]["label"],
            variable: _questionModel[key]["variable"],
            key: key));
        break;
      default:
        retval.add(ListValueDetail(
            question: _questionModel[key]["question"],
            label: _questionModel[key]["label"],
            variable: _questionModel[key]["variable"],
            key: key));
        //retval.add(Text("Unknown widget type"));
        break;
    }
  });
  return retval;
}

输出:

Performing hot restart...
Syncing files to device iPhone SE...
Restarted application in 1,710ms.
flutter: false
flutter: false
flutter: false

Dart 版本:

Dart VM version: 2.7.2 (Mon Mar 23 22:11:27 2020 +0100) on "macos_x64"

最佳答案

您可以通过简单地使用 if 语句(如

)来检查列表的类型
if (test is List<String>) {
}

如果您打印 print(test.runtimeType)它会给你 List<String> 。您可以像这样使用runtimeType 的一种方法。

 switch(test.runtimeType.toString()) {
      case "List<String>":
        print(true);
        break;
      default:
        print(false);
    }

我更喜欢第一个选项。你不知道toString方法实现可以随时更改。

关于flutter - Dart 中通用 List 对象的运行时类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61146446/

相关文章:

flutter - 在初始化期间读取静态变量| flutter

angular - 如何在 Angular Dart 中使用 Material 下拉选择

Flutter 驱动测试浏览器

firebase - 抽象服务类中的 Flutter Firestore 分页

flutter - 为什么他们在实例名称中使用下划线?

flutter - 如何将背景图像添加到 flutter

dart - 无论如何在 Flutter Webview 上绘制一个小部件

database - Flutter:共享偏好或速度范围模型

json - 如何在 dart 中创建 json 可编码类

android - 如何为iOS强制抖动设备方向