问题描述
你好,我有一个简单的表单,基本上它将显示文章名称及其下的所有服务,并且在同一行中将有+和-按钮将增加变量,但是这里的问题是我没有我不知道确切会有多少服务,因为将在应用程序的其他部分创建并链接服务,但是我可以使用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,],)
),)
例如,如果您单击了第三项服务上的“添加”按钮,您将看到所有其他服务将具有相同的数量,因为它们共享相同的变量
我想要的是用户提交我想要的表单时
请与我分享您的想法,如果遇到此类问题您会怎么做
解决方法
您需要一个清单来保留您的数量。列表类似于其他编程语言中的数组。
尝试这样的事情:
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]--;)