[英]how to pass listView.builder index to a parameter of custom widget in flutter
[英]Flutter how to pass a widget as a parameter
我已經在 flutter 開發了一個移動應用程序幾天,只是為了重用一些代碼,我想將一個小部件作為參數傳遞,這樣我就不必復制一堆代碼。 我嘗試了一些我在這里找到的解決方案,但沒有一個有效。
這是我到目前為止所擁有的:
CarouselItem.dart
class CarouselItem extends StatelessWidget {
CarouselItem({
Key? key,
required this.index, required this.height, required this.width, required this.title, required this.destination,
}) : super(key: key);
final int index;
final double height;
final double width;
final String title;
final RouteOneCallBack destination; //trying to pass the widget
//List of images
List<String> list = [
'https://audioguia.s3.eu-west-3.amazonaws.com/FOTOS/Alqueva/A1-placa+entrada.jpg',
];
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.all(6.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(30.0),
child: GestureDetector(
child: Image.network(
list[index],
fit: BoxFit.cover,
height: height,
width: width,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
destination(), //widget goes here
),
);
},
),
),
),
SizedBox(height: 20),
Container(
padding: EdgeInsets.only(left: 10),
child: Text(
title,
style: TextStyle(fontWeight: FontWeight.bold),
),
),
],
);
}
}
家.dart
我怎么想要這個 go
items: [
CarouselItem(
index: 0,
width: 500,
height: 200,
title: "Destino 1",
destination: RouteOne()
),
我錯過了額外的步驟嗎? 提前致謝。 基本上我想做的與我對已有的 String 或 int 參數所做的相同,但似乎無法理解如何使用小部件執行此操作。
RouteOne() 是一個有狀態的小部件
class BottomSheetDialog extends StatelessWidget {
final Widget? child;
const BottomSheetDialog({Key? key, @required this.child}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
height: Sizes.s350,
decoration: BoxDecoration(
color: Get.theme.cardColor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(Sizes.s30),
topRight: Radius.circular(Sizes.s30))),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Expanded(child: child!),
],
));
}
}
// call
BottomSheetDialog(child:const Text("test"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.