【问题标题】:Flutter issue: DropDown in ListView.BuilderFlutter 问题:ListView.Builder 中的 DropDown
【发布时间】:2021-12-20 00:43:21
【问题描述】:

我正在从服务器获取值到下拉列表,这些值是从下拉列表值的静态列表中插入的,但是当来自服务器的值是“待定”时,我需要使用下拉列表来更新我的代码下方的特定记录。

  List<String> approvalList = ['Pending', 'Approve', 'Discard'];
  String dropdownValue="Pending";

 Container(
                  height: MediaQuery.of(context).size.height*0.3,
                  width: MediaQuery.of(context).size.width,
                  child:StreamBuilder<List<ApprovalModel>>(
                    stream: bloc.approvalsStream,
                    initialData: [],
                    builder: (context, snapshot) {
                      return ListView.builder(
                          itemCount: snapshot.data!.length,
                          itemBuilder: (context,i){
                            return snapshot.connectionState==ConnectionState.waiting?Lottie.asset(
                              'assets/lottieloading.json',
                              width: 70,
                              height: 70,
                              fit: BoxFit.fill,
                            ):ListTile(
                              title: Text(snapshot.data![i].approverName),
                              trailing: StatefulBuilder(
                                  builder: (BuildContext context, StateSetter setState) {

                                   return DropdownButton<String>(

                                        value: snapshot.data![i].status==0?'Pending':
                                        snapshot.data![i].status==1?'Approve':
                                        'Discard',



                                        items: approvalList.map((String val) {
                                          return DropdownMenuItem<String>(
                                            value: val,
                                            child: new Text(val),
                                          );
                                        }).toList(),
                                        hint: Text(selectedValue),


                                        onChanged: (val) {
                                          setState(() {
                                            dropdownValue = val!;
                                          });
                                        });
                                  }
                              ),
                            );
                          });
                    }
                  )
                  ,
                ),

如您所见,我正在从服务器设置值,它工作正常,但是当该值处于待处理状态时,我想使用下拉列表更新数据库中的记录。

【问题讨论】:

  • 根据您的说法,您想在数据库处于挂起状态时使用DropDown更新数据库。这是否意味着您希望仅在获得 snapshot.data![i].status==0?'Pending': 后更新 db,或者您希望在从 DropDownMenu 中选择后更新?
  • 我需要下拉按钮的更新和状态更改。

标签: android flutter mobile-development flutter-dropdownbutton


【解决方案1】:

onChanged,当你更新你的dropdownValue时,也调用你正在使用的方法来更新数据库中的记录。

【讨论】:

  • 我已经尝试过了,但我希望下拉菜单改变它的状态。
  • 当你使用 setState((){}) 时值不会更新吗?
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 2020-07-02
  • 2021-02-24
  • 2020-09-18
  • 1970-01-01
  • 2020-05-12
  • 2021-04-30
  • 2019-01-31
相关资源
最近更新 更多