使用 "quantity" 按钮创建动态 "Add to car"
Create a dynamic "Add to car" with "quantity" Button
我想为我的 Flutter-Dart 电子商务应用程序创建一个动态按钮,样式需要是这样的:
添加商品时,您可以选择数量,但当数量回到0时,“添加商品”按钮将再次出现,并带有淡入淡出的效果。
第一个例子
第二个例子
这是一个简单的示例,我将如何创建此行为。
You can test this code yourself on DartPad
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
int quantity = 0;
@override
Widget build(BuildContext context) {
return Card(
color: Colors.blue,
child: SizedBox(
height: 50,
width: 100,
child: quantity == 0
? TextButton(
child: const Text(
'Add Item',
style: TextStyle(
color: Colors.white,
),
),
onPressed: () {
setState(() {
quantity++;
});
},
)
: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: const Icon(Icons.remove),
onPressed: () {
setState(() {
quantity--;
});
},
),
Text(quantity.toString()),
IconButton(
icon: const Icon(Icons.add),
onPressed: () {
setState(() {
quantity++;
});
},
),
],
),
));
}
}
我想为我的 Flutter-Dart 电子商务应用程序创建一个动态按钮,样式需要是这样的:
添加商品时,您可以选择数量,但当数量回到0时,“添加商品”按钮将再次出现,并带有淡入淡出的效果。
第一个例子
第二个例子
这是一个简单的示例,我将如何创建此行为。
You can test this code yourself on DartPad
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
int quantity = 0;
@override
Widget build(BuildContext context) {
return Card(
color: Colors.blue,
child: SizedBox(
height: 50,
width: 100,
child: quantity == 0
? TextButton(
child: const Text(
'Add Item',
style: TextStyle(
color: Colors.white,
),
),
onPressed: () {
setState(() {
quantity++;
});
},
)
: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: const Icon(Icons.remove),
onPressed: () {
setState(() {
quantity--;
});
},
),
Text(quantity.toString()),
IconButton(
icon: const Icon(Icons.add),
onPressed: () {
setState(() {
quantity++;
});
},
),
],
),
));
}
}