Flutter 颤振从下拉列表中添加表中的元素

Flutter 颤振从下拉列表中添加表中的元素,flutter,dart,mobile,Flutter,Dart,Mobile,我正试着自己学习颤振,我有一个关于按钮结构的问题 简单地说,我想在表中添加一些项目,用户可以从可搜索的下拉菜单中选择这些项目 问题是我添加了表,而没有首先从下拉列表中选择 下面是它的外观以及代码: 列出产品; 列出所选产品; 布尔排序; RelatedProductComboBox\u selectedPlatformReach; 列表\u平台范围= RelatedProductComboBox.getRelatedProduct(); 列表\u下拉平台范围; @凌驾 void initSta

我正试着自己学习颤振,我有一个关于按钮结构的问题

简单地说,我想在表中添加一些项目,用户可以从可搜索的下拉菜单中选择这些项目

问题是我添加了表,而没有首先从下拉列表中选择

下面是它的外观以及代码:

列出产品;
列出所选产品;
布尔排序;
RelatedProductComboBox\u selectedPlatformReach;
列表\u平台范围=
RelatedProductComboBox.getRelatedProduct();
列表\u下拉平台范围;
@凌驾
void initState(){
排序=假;
选定产品=[];
products=Product.getProducts();
_升降平台河段=
buildDropdownMenuItemsRelatedProduct(_platformReach);
_selectedPlatformReach=\u dropdownPlatformReach[0]。值;
super.initState();
}
onSelectedRow(布尔选定,产品)异步{
设置状态(){
如果(选定){
选择产品。添加(产品);
}否则{
所选产品。删除(产品);
}
});
}
deleteSelected()异步{
设置状态(){
如果(selectedProducts.isNotEmpty){
列表温度=[];
临时添加所有(选定产品);
用于(温度中的产品){
产品。移除(产品);
所选产品。删除(产品);
}
}
});
}
SingleChildScrollView dataRelatedProduct(){
返回SingleChildScrollView(
滚动方向:轴垂直,
子:列(
儿童:[
数据表(
排序:排序,
sortColumnIndex:0,
栏目:[
数据列(
标签:文本(“名称”),
数字:false,
),
],
行:产品
.地图(
(产品)=>DataRow(
已选:已选产品。包含(产品),
(b){
打印(“Onselect”);
onSelectedRow(b,产品);
},
单元格:[
数据单元(
可搜索下拉列表(
是的,
值:_selectedPlatformReach,
项目:_dropdownPlatformReach,
isCaseSensitiveSearch:错误,
一旦更改:
(选择相关产品组合框PlatformReach){
设置状态(){
_selectedPlatformReach=selectedPlatformReach;
});
},
),
),
],
),
)
.toList(),
),
],
),
);
}
List<Product> products;
 List<Product> selectedProducts;
 bool sort;

 RelatedProductComboBox _selectedPlatformReach;
 List<RelatedProductComboBox> _platformReach =
 RelatedProductComboBox.getRelatedProduct();
 List<DropdownMenuItem<RelatedProductComboBox>> _dropdownPlatformReach;


 @override
 void initState() {
   sort = false;
   selectedProducts = [];
   products = Product.getProducts();

   _dropdownPlatformReach =
       buildDropdownMenuItemsRelatedProduct(_platformReach);
   _selectedPlatformReach = _dropdownPlatformReach[0].value;

   super.initState();
 }

 onSelectedRow(bool selected, Product product) async {
   setState(() {
     if (selected) {
       selectedProducts.add(product);
     } else {
       selectedProducts.remove(product);
     }
   });
 }


 deleteSelected() async {
   setState(() {
     if (selectedProducts.isNotEmpty) {
       List<Product> temp = [];
       temp.addAll(selectedProducts);
       for (Product product in temp) {
         products.remove(product);
         selectedProducts.remove(product);
       }
     }
   });
 }

 SingleChildScrollView dataRelatedProduct() {
   return SingleChildScrollView(
     scrollDirection: Axis.vertical,
     child: Column(
       children: <Widget>[
         DataTable(
           sortAscending: sort,
           sortColumnIndex: 0,
           columns: [
             DataColumn(
               label: Text("Name"),
               numeric: false,
             ),
           ],
           rows: products
               .map(
                 (product) => DataRow(
                   selected: selectedProducts.contains(product),
                   onSelectChanged: (b) {
                     print("Onselect");
                     onSelectedRow(b, product);
                   },
                   cells: [
                     DataCell(
                       SearchableDropdown(
                         isExpanded: true,
                         value: _selectedPlatformReach,
                         items: _dropdownPlatformReach,
                         isCaseSensitiveSearch: false,
                         onChanged:
                             (RelatedProductComboBox selectedPlatformReach) {
                           setState(() {
                             _selectedPlatformReach = selectedPlatformReach;
                           });
                         },
                       ),
                     ),
                   ],
                 ),
               )
               .toList(),
         ),
       ],
     ),
   );
 }