我正在尝试实现Searchable Dropdown包:
https://github.com/salim-lachdhaf/searchable_dropdown
我正在使用mobx和Sqlite
请参阅小部件代码:
DropdownSearch<TarefaModel>(
label: 'BUSCAR TAREFAS',
onFind: (String filter) =>
controller.filtrarTarefas(filter),
onChanged: (TarefaModel data) {
print(data);
},
dropdownBuilder: _customDropDownExample,
),
我的Mobx动作:
控制器动作:
@observable
ObservableList<TarefaModel> tarefas = new ObservableList<TarefaModel>();
@action
filtrarTarefas(termo) async {
final repository = new TarefaRepository();
tarefas = new ObservableList<TarefaModel>();
var data = await repository.search(termo);
tarefas.addAll(data);
return tarefas;
}
自定义下拉列表:
Widget _customDropDownExample(
BuildContext context, TarefaModel item, String itemDesignation) {
return Container(
child: Observer(
builder: (_) => ListView.builder(
itemCount: controller.tarefas.length,
itemBuilder: (context, i) {
return ListTile(
title: Text(item.descricao),
subtitle: Text(item.label),
);
})),
);
}
我的模特:
class TarefaModel{
int id;
String descricao;
TarefaModel({this.id, this.descricao});
Map<String, dynamic> toMap() {
return {'id': id,'descricao': descricao};
}
}
但是这个错误显示了:
有什么主意吗?谢谢
答案 0 :(得分:0)
我的存储库:
Future<List<TarefaModel>> search(String term) async {
try {
final Database db = await _getDatabase();
final List<Map<String, dynamic>> maps = await db.query(
TAREFAS_TABLE,
where: "descricao LIKE ?",
whereArgs: [
'%$term%',
],
);
return List.generate(
maps.length,
(i) {
return TarefaModel(
id: maps[i]['id'],
descricao: maps[i]['descricao'],
);
},
);
} catch (ex) {
print(ex);
return new List<TarefaModel>();
}
}