Ошибка трепетания при попытке использовать ExpansionPanelList / ExpansionPanel с потоком (Firebase) - PullRequest
0 голосов
/ 21 марта 2020

У меня есть следующий фрагмент кода:

  @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 'не является подтипом типа' List '

Но когда я делаю это и добавляю <Widget> сразу после "map", я получаю другую ошибку:

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

Не знаю, как решить эту проблему ...

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Чтобы преобразовать List<dynamic> в список определенного типа c, вы можете сделать:

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

Я не совсем уверен, какая переменная в вашем коде является List<dynamic>, но перенос его в приведенный выше оператор должен преобразовать его в правильный тип (и, конечно, произойдет сбой, если не все элементы ExpansionPanel экземпляры).

0 голосов
/ 21 марта 2020

Оказалось, замена .map на .map<ExpansionPanel> добилась цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...