Flutter - 泛型函数 typedef 错误

Khá*_* Đỗ 3 dart flutter

我正在按照教程building-a-social-network-with-flutter在 flutter 中编写一个基本的 loadmore 列表视图:

  • 定义一个 typedef 函数作为列表视图适配器,它为每个项目返回一个小部件:

    typedef Widget WidgetAdapter<T>(T t);
    
    Run Code Online (Sandbox Code Playgroud)
  • 我的基本列表视图小部件:

    class LoadingListView<T> extends StatefulWidget{
    
      ...
    
      final WidgetAdapter<T> widgetAdapter;
    
      ...
    
      @override createState() => new _LoadingListViewState();
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 我的基本列表视图状态:

    class _LoadingListViewState<T> extends State<LoadingListView<T>> {
    
      ...
    
      List<T> objects = [];
    
      ...
    
      Widget itemBuilder(BuildContext context, int index) {
    
        return widget.widgetAdapter != null ? widget.widgetAdapter(objects[index]);
            : new Container();
      }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 在我的 UserList 小部件中:

    @override
    Widget build(BuildContext context) {
    Widget w;
    w = new LoadingListView<User>(
        request, widgetAdapter: adapt, pageSize: widget.pageSize, pageThreshold: widget.pageThreshold);
    return w;
    }
    
    Widget adapt(User user){
    return new UserItem(user); //return widget UserItem
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我收到错误:

    type '(User) => Widget' is not a subtype of type '(dynamic) => Widget'
    
    Run Code Online (Sandbox Code Playgroud)

如何修复它。请帮我。非常感谢你。

dhu*_*981 5

您的 StatefullWidget 类中的 createState() 方法存在问题。

像这样更新你的 createState() 方法。

@override  
State createState() => new _LoadingListViewState<T>()
Run Code Online (Sandbox Code Playgroud)