【发布时间】:2019-05-19 11:14:12
【问题描述】:
我正在尝试从我的 SQFlite 数据库中读取下拉列表的列表部分,但不知道如何操作。
从 database_helper 查询
Future<List<Map>> getFieldData(String animal, String fieldName)
var dbClient = await db;
return await dbClient.rawQuery('SELECT lbOption FROM jkAssessData Where lbAnimal = \'${animal}\' AND lbField = \'${fieldName}\'');
}
我可以让它与静态值列表一起使用
final List<String> _animals = <String>['CATTLE', 'SHEEP', 'GOAT'];
填充此下拉列表
FormField<String>(
builder: (FormFieldState<String> state) {
return InputDecorator(
decoration: InputDecoration(
labelText: 'Animal Type',
errorText: state.hasError ? state.errorText : null,
),
isEmpty: _animal == '',
child: DropdownButtonHideUnderline(
child: DropdownButton<String>(
value: _animal,
isDense: true,
onChanged: (String newValue) {
setState(() {
assessHed.asAnimal = newValue;
_animal = newValue;
state.didChange(newValue);
});
},
items: _animals.map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
),
),
);
},
validator: (val) {
//return val != 'SUMMARY' ? 'DETAIL' : 'Please select Type';
return null;
},
),
它是表单上多个字段的一部分
【问题讨论】:
-
您好像忘记给
getFieldData打电话了,您尝试过initState() { getFieldData().then(() { setState(() => _animals = ..yourStuff..); }); }吗? -
您是否还注意到您正在返回
List<Map>而您正在执行_animals.map((String) ...)? -
我没有包含对函数的调用。使用 _animals.map() 的下拉列表只是具有这 3 个已知值的静态下拉列表,我需要能够从数据库中填充其他值。
-
我不确定在哪里调用类似 List
标签: flutter