Dart 颤振:x27型;列表<;动态>';不是类型为';列表<;Widget>';

Dart 颤振:x27型;列表<;动态>';不是类型为';列表<;Widget>';,dart,flutter,Dart,Flutter,我正在使用flatter开发一个简单的todo应用程序 该应用程序有多个视图和表(SQLite) Todo(无状态小部件) 标记(StatefulWidget) 对于Todo ui,它可以正常工作,但标记ui不工作 第一个代码是TODOUI。(很好) 类到媒体扩展了无状态小部件{ 最终托托存款_托托存款; 最终的Todos集团; TodosPage(this.\u todoRepository):this.bloc=todosploc(\u todoRepository); @凌驾 小部件构建(

我正在使用flatter开发一个简单的todo应用程序

该应用程序有多个视图和表(SQLite)

  • Todo(无状态小部件)
  • 标记(StatefulWidget)
  • 对于Todo ui,它可以正常工作,但标记ui不工作

    第一个代码是TODOUI。(很好)

    类到媒体扩展了无状态小部件{
    最终托托存款_托托存款;
    最终的Todos集团;
    TodosPage(this.\u todoRepository):this.bloc=todosploc(\u todoRepository);
    @凌驾
    小部件构建(构建上下文){
    返回脚手架(
    正文:中(
    孩子:StreamBuilder(
    流:bloc.todos,
    生成器:(上下文,快照){
    如果(snapshot.data==null){
    返回文本(“空”);
    }
    返回列表视图(
    子项:snapshot.data.map(_buildItem).toList(),
    );
    }),
    ),
    );
    }
    小部件buildItem(Todo Todo)=>Text(Todo.name);
    
    这里是标签ui(它不工作)

    class TagsPage扩展StatefulWidget{
    最终标记存储库_标记存储库;
    TagsPage(此._tagRepository);
    @凌驾
    状态createState()=>\u标记状态(\u标记存储库);
    }
    类_标记状态扩展状态{
    最终标记存储库_标记存储库;
    最终标记块;
    _TagsState(this.\u tagRepository):this.bloc=TagsBloc(\u tagRepository);
    @凌驾
    小部件构建(构建上下文)=>Scaffold(
    正文:中(
    孩子:StreamBuilder(
    流:bloc.tags,
    生成器:(上下文,快照){
    if(snapshot.data==null | | snapshot.data.isEmpty){
    打印(“[TagsPage][JOS]build-snapshot.data为空”);
    }否则{
    返回列表视图(
    子项:snapshot.data.map(_buildTagItem).toList(),
    );
    }
    },
    ),
    ),
    );
    _buildTagItem(Tag标签)=>文本(Tag.name);
    }
    
    这里的标语是:

    class TagsBloc{
    最终标记存储库_标记存储库;
    最终_gettagssobject=PublishSubject();
    Stream get tags=>\u gettagssobject.Stream;
    TagsBloc(此.\u tagRepository){
    _getTags();
    }
    Future\u getTags()异步{
    等待_tagRepository.getAll()。然后((列表){
    _gettagssobject.add(列表);
    });
    }
    }
    
    运行时,标记ui显示以下错误日志:

    04-07 00:13:45.698 25181-25195/com.youknow.jos I/flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
    04-07 00:13:45.708 25181-25195/com.youknow.jos I/flutter: The following assertion was thrown building StreamBuilder<List<Tag>>(dirty, dependencies:
    04-07 00:13:45.708 25181-25195/com.youknow.jos I/flutter: [_LocalizationsScope-[GlobalKey#49b9d], _InheritedTheme], state: _StreamBuilderBaseState<List<Tag>,
    04-07 00:13:45.708 25181-25195/com.youknow.jos I/flutter: AsyncSnapshot<List<Tag>>>#65ac3):
    04-07 00:13:45.708 25181-25195/com.youknow.jos I/flutter: type 'List<dynamic>' is not a subtype of type 'List<Widget>'
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flutter: Either the assertion indicates an error in the framework itself, or we should provide substantially
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flutter: more information in this error message to help you determine and fix the underlying cause.
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flutter: In either case, please report this assertion by filing a bug on GitHub:
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flutter:   https://github.com/flutter/flutter/issues/new?template=BUG.md
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flutter: When the exception was thrown, this was the stack:
    04-07 00:13:45.724 25181-25195/com.youknow.jos I/flutter: #0      _TagsState.build.<anonymous closure> (package:jos/pages/tags.dart:49:62)
    
    04-07 00:13:45.698 25181-25195/com.youknow.jos I/flatter:══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════
    04-07 00:13:45.708 25181-25195/com.youknow.jos I/flatter:以下断言被抛出building StreamBuilder(脏,依赖项:
    04-07 00:13:45.708 25181-25195/com.youknow.jos I/flatter:[本地化范围-[环球银行(GlobalKey)49b9d],[你继承的主题],[你继承的主题]状态:[你的StreamBuilderBaseState 65ac3]:
    04-07 00:13:45.708 25181-25195/com.youknow.jos I/flatter:类型“列表”不是类型“列表”的子类型
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flatter:要么断言表明框架本身存在错误,要么我们应该提供
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flatter:此错误消息中的更多信息可帮助您确定并修复根本原因。
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flatter:在任何一种情况下,请通过在GitHub上提交bug来报告此断言:
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/颤振:https://github.com/flutter/flutter/issues/new?template=BUG.md
    04-07 00:13:45.715 25181-25195/com.youknow.jos I/flatter:抛出异常时,这是堆栈:
    04-07 00:13:45.724 25181-25195/com.youknow.jos I/flatter:#0"TagsState.build.(软件包:jos/pages/tags.dart:49:62)
    
    Todo和Tag没有区别。 我认为唯一的区别是StatefulWidget/无状态widget。
    我不知道如何解决此问题。

    您尚未在
    \u buildTagItem
    上声明返回类型。请更改此项:

      _buildTagItem(Tag tag) => Text(tag.name);
    
    为此:

      Widget _buildTagItem(Tag tag) => Text(tag.name);
    

    因此,您的
    map(…).toList()
    返回
    List
    ,而不是
    List
    ——这就是错误所在。

    @yoonhok总是试图坚持使用数据类型(静态类型语言的强大功能),这样您就知道编译时会发生什么。我认为您遇到了一个很好的例子。