我已经在 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),
),
),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
主页.dart
我多么希望这一切能够顺利进行
items: [
CarouselItem(
index: 0,
width: 500,
height: 200,
title: "Destino 1",
destination: RouteOne()
),
Run Code Online (Sandbox Code Playgroud)
我错过了额外的步骤吗?提前致谢。基本上我想要做的与我对已有的 String 或 int 参数所做的相同,但似乎无法理解如何使用小部件执行此操作。
RouteOne() 是一个有状态的小部件
小智 5
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"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7037 次 |
| 最近记录: |