Flutter 返回用户在Dart中提供的相同对象类型

Flutter 返回用户在Dart中提供的相同对象类型,flutter,dart,widget,Flutter,Dart,Widget,因此,我有一个我为Flatter编写的小部件,它是一个类似Tinder的刷卡,我希望消费者能够提供他想要的任何类型的列表,我希望使用他提供的相同类型,以他应该提供的生成器方法返回: class Swipeable extends StatelessWidget { final List<T> data; final Widget Function(BuildContext, T) builder; Swipeable({required this.data, requi

因此,我有一个我为Flatter编写的小部件,它是一个类似Tinder的刷卡,我希望消费者能够提供他想要的任何类型的列表,我希望使用他提供的相同类型,以他应该提供的生成器方法返回:

class Swipeable extends StatelessWidget {
  final List<T> data;
  final Widget Function(BuildContext, T) builder;

  Swipeable({required this.data, required this.builder});
}
class Swipeable扩展了无状态小部件{
最终清单数据;
最终小部件功能(BuildContext,T)生成器;
Swipeable({需要this.data,需要this.builder});
}
其中,T是用户提供的数据类型,由用户控制,不受我的限制

消费者应该能够像这样使用小部件:

Swipeable(
  data: <User>[
    User(
      name: "Zakaria",
      profession: "Geek",
      images: [
        "https://images.unsplash.com/photo-1533488069324-f9265c15d37f?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=594&q=80",
        "https://images.unsplash.com/photo-1583864697784-a0efc8379f70?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=634&q=80",
      ],
      age: 18,
    )
  ],
  builder: (context, user) {
    return Text(user.name);
  }
)
Swipeable(
数据:[
使用者(
姓名:“扎卡里亚”,
职业:“极客”,
图像:[
"https://images.unsplash.com/photo-1533488069324-f9265c15d37f?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=594&q=80“,
"https://images.unsplash.com/photo-1583864697784-a0efc8379f70?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=634&q=80“,
],
年龄:18岁,
)
],
生成器:(上下文,用户){
返回文本(用户名);
}
)

我希望你能理解我的问题,当我还是一个新手的时候,我不太擅长解释东西。

你可以用一个泛型类来解决这个问题。 有关更多信息,请参阅语言教程中的部分

//类(↓ 注意这里的类型参数)
类Swipeable扩展了无状态小部件{
最终清单数据;
最终小部件功能(BuildContext,T)生成器;
Swipeable({需要this.data,需要this.builder});
}
类型推断应该在您的示例中起作用(您甚至不需要指定列表类型),但如果不起作用,您可以使用
Swipeable
指定类型


另一方面,你甚至不需要像这样通过你的列表。考虑<代码> ListVIEW < /C>和<代码> GRIDVIEW> /Cuilder Builder构造器,它提供索引而不是对象。为了保持一致性,您可能也需要这样做。

问题是什么?如果希望
Swipeable
是泛型的,则需要执行:
class Swipeable扩展了无状态widget
。我希望生成器函数的第二个参数与提供的列表的类型相同