尝试对(Firebase)流使用ExpansionPanelList / ExpansionPanel时出现Flutter错误

时间:2020-03-21 11:47:22

标签: firebase flutter dart google-cloud-firestore widget

我有以下代码段:

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Accounts.getAccounts(widget.firebaseUser.uid),
      builder: (BuildContext context, AsyncSnapshot snapshot) {
        return ExpansionPanelList(
          children: snapshot.data.documents
              .map((account) => new ExpansionPanel(
                  headerBuilder: (BuildContext context, bool isExpanded) {
                    return ListTile(
                      title: Text("Some title"),
                    );
                  },
                  body: ListTile(
                    title: Text("Some text"),
                  )
              )).toList(),
          );
        }  
      );
    }  

这给出了错误: type 'List<dynamic>' is not a subtype of type 'List<ExpansionPanel>'

我在这里看到了一个解决方案:type 'List<dynamic>' is not a subtype of type 'List<Widget>'

但是当我在“地图”之后添加<Widget>时,出现了另一个错误:

type 'List<dynamic>' is not a subtype of type 'List<ExpansionPanel>'

不知道如何解决此问题...

2 个答案:

答案 0 :(得分:1)

要将List<dynamic>转换为特定类型的列表,可以执行以下操作:

List<ExpansionPanel>.from(...);

我不确定您代码中的哪个变量是List<dynamic>,但是将其包装在上面的语句中应将其转换为正确的类型(如果不是所有项都为{{1 }}实例。

答案 1 :(得分:0)

原来,用.map替换.map<ExpansionPanel>可以解决问题。