我有一些卡片(可以翻转,我为此使用了 flip_card)。现在我想使用carousel_slider展示这些卡片。
但是如果我使用 aFlipCardController
来翻转卡片(当包裹在 carousel_slider 下时),它会翻转错误的卡片(在我的情况下,是下一张卡片)。此控制器由当前卡的按钮控制。
我正在使用这段代码:
child: CarouselSlider(
items: [0, 1, 2].map((i) {
return Builder(
builder: (BuildContext context) {
return FlipCard(
controller: controller, //FlipCardController
fill: Fill.fillBack,
flipOnTouch: false,
direction: FlipDirection.HORIZONTAL,
front: ExperienceCardFront( //this is my custom widget
image: data[i][4],
title: data[i][0]),
back: ExperienceCardBack(), //another custom widget
);
});
}).toList(),
options: CarouselOptions(),
),
这是卡片的前面小部件,其中包含包含控制器的按钮:
//import statements
class ExperienceCardFront extends StatefulWidget {
//contents
}
class _ExperienceCardFrontState extends State<ExperienceCardFront> {
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: [
//other widgets
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: MaterialButton(
child: text('Read More', 15, Colors.blueGrey),
onPressed: () {
controller.toggleCard(); //here is the controller
},
),
),
],
),
);
}
}
我附上相同的屏幕录像:
我还发现,如果控制器被移除并flipOnTouch
设置为 true,则可以在触摸时翻转所需的卡片。我仅在使用控制器时遇到此问题。