Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 是否可以在颤振/省道中创建具有多种类型的列表?_Flutter_Dart - Fatal编程技术网

Flutter 是否可以在颤振/省道中创建具有多种类型的列表?

Flutter 是否可以在颤振/省道中创建具有多种类型的列表?,flutter,dart,Flutter,Dart,假设两个不相关的类(来自颤振库等): 是否可以有一个列表?我知道可以有列表,但这也会允许接受Cs、Ds和Zs 您可以为a和B创建父抽象类,并添加一个列表,该列表只允许来自父类的子类 abstract class Foo { } class A extends Foo { } class B extends Foo { } class C { } 这是正确的: List<Foo> items = [A(), B()]; 另一个选项(长版) 用法 List ite

假设两个不相关的类(来自颤振库等):


是否可以有一个
列表
?我知道可以有
列表
,但这也会允许接受Cs、Ds和Zs

您可以为
a
B
创建父抽象类,并添加一个
列表
,该列表只允许来自父类的子类

abstract class Foo {

}


class A extends Foo {

}

class B extends Foo {

}

class C {

}
这是正确的:

  List<Foo> items = [A(), B()];
另一个选项(长版)

用法

List items=[Bar(a:a())、Bar(b:b())];
用于(项目中的条形项目){
如果(item.a!=null)打印(“item:${item.a}”);
如果(item.b!=null)打印(“item:${item.b}”);
}

我想到了这一点,但我并不真正拥有正在使用的类。我想我可以在它们周围写上包装纸,但那可能会弄得一团糟。感谢您的提交。
  List<Foo> items = [A(), B()];
  List<Foo> items = [A(), B(),C()];
  for(Foo item in items){
    print(item.runtimeType);
  }
class Bar {
  final A a;
  final B b;
  Bar({this.a, this.b}) {
    if (a == null && b == null || a != null && b != null) throw ArgumentError("only one object is allowed");
  }
}


class A  {

}

class B  {

}

class C {

}
  List<Bar> items = [Bar(a: A()), Bar(b: B())];

  for(Bar item in items){
    if (item.a != null) print("Item : ${item.a}");
    if (item.b != null) print("Item : ${item.b}");
  }