Flutter 返回用户在Dart中提供的相同对象类型
因此,我有一个我为Flatter编写的小部件,它是一个类似Tinder的刷卡,我希望消费者能够提供他想要的任何类型的列表,我希望使用他提供的相同类型,以他应该提供的生成器方法返回: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
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
。我希望生成器函数的第二个参数与提供的列表的类型相同