Flutter - 为列表中的每个项目动态创建多个变量
Flutter - Creating Multiple Variables Dynamically for each item in list
你好,我有一个简单的表格,它基本上会显示文章名称及其下方的所有服务,并且在同一行中会有 + 和 - 按钮来递增变量,但这里的问题是我不知道确切会有多少服务,因为服务将被创建并从应用程序的其他部分链接,但是我可以使用 ListName.length
获取列表的长度
这里是示例代码
int quantity = 0;
Column(
children: <Widget>[
articleName(article),
Column(
children: List.generate(price.length, (index) =>
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
padding: EdgeInsets.all(10),
child: Text(
translator.currentLanguage == 'ar' ?
'${price[index].serviceNameAr}'
:'${price[index].serviceNameEn}',
style: TextStyle(
fontSize: responsivenessController.font,
),
),
),
Text('${price[index].price}' ,
style: TextStyle(
fontSize: responsivenessController.bodyFont,
),
),
FloatingActionButton(
onPressed: (){
setState(() {
quantity = quantity + 1;
});
},
child: Icon(Icons.add, color: Colors.black,),
backgroundColor: Colors.white,
),
Text('$quantity',
style: TextStyle(fontSize: responsivenessController.font)),
FloatingActionButton(
onPressed: (){
setState(() {
quantity = quantity - 1;
});
},
child: Icon(Icons.remove , color: Colors.black,),
backgroundColor: Colors.white,
),
],
)
),
)
如您所见,如果您单击第三个服务上的添加按钮,例如,所有其他服务将具有相同的数量,因为它们共享相同的变量
我想要的是当用户提交我想要的表单时
- 文章 ID -> 存在于之前的代码中
- 服务 ID -> 存在
- 数量 -> 导致问题的那个
- 价格 -> 取决于数量
请与我分享你的想法,如果你遇到这样的问题你会怎么做
您需要一个清单来保存您的数量。列表类似于其他编程语言中的数组。
尝试这样的事情:
List<int> quantities = [];
// initializing the list with the lenth provided
for(int i = 0; i<price.length; i++){
quantities.add(0);
}
并在您的 setState 中以这种方式使用列表:
quantities[index] = quantities[index] + 1 (or quantities[index]++;)
quantities[index] = quantities[index] - 1 (or quantities[index]--;)
你好,我有一个简单的表格,它基本上会显示文章名称及其下方的所有服务,并且在同一行中会有 + 和 - 按钮来递增变量,但这里的问题是我不知道确切会有多少服务,因为服务将被创建并从应用程序的其他部分链接,但是我可以使用 ListName.length
获取列表的长度这里是示例代码
int quantity = 0;
Column(
children: <Widget>[
articleName(article),
Column(
children: List.generate(price.length, (index) =>
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
padding: EdgeInsets.all(10),
child: Text(
translator.currentLanguage == 'ar' ?
'${price[index].serviceNameAr}'
:'${price[index].serviceNameEn}',
style: TextStyle(
fontSize: responsivenessController.font,
),
),
),
Text('${price[index].price}' ,
style: TextStyle(
fontSize: responsivenessController.bodyFont,
),
),
FloatingActionButton(
onPressed: (){
setState(() {
quantity = quantity + 1;
});
},
child: Icon(Icons.add, color: Colors.black,),
backgroundColor: Colors.white,
),
Text('$quantity',
style: TextStyle(fontSize: responsivenessController.font)),
FloatingActionButton(
onPressed: (){
setState(() {
quantity = quantity - 1;
});
},
child: Icon(Icons.remove , color: Colors.black,),
backgroundColor: Colors.white,
),
],
)
),
)
如您所见,如果您单击第三个服务上的添加按钮,例如,所有其他服务将具有相同的数量,因为它们共享相同的变量
我想要的是当用户提交我想要的表单时
- 文章 ID -> 存在于之前的代码中
- 服务 ID -> 存在
- 数量 -> 导致问题的那个
- 价格 -> 取决于数量
请与我分享你的想法,如果你遇到这样的问题你会怎么做
您需要一个清单来保存您的数量。列表类似于其他编程语言中的数组。
尝试这样的事情:
List<int> quantities = [];
// initializing the list with the lenth provided
for(int i = 0; i<price.length; i++){
quantities.add(0);
}
并在您的 setState 中以这种方式使用列表:
quantities[index] = quantities[index] + 1 (or quantities[index]++;)
quantities[index] = quantities[index] - 1 (or quantities[index]--;)