flutter - 收听 FutureProvider 的变化
问题描述
我一直试图找到一些关于ListView.builder
如何使用FutureProvider
. 我的目标是拥有一个搜索功能,我可以在其中查询SQFlite
并返回一个新列表,该列表将重新分配给ListView.builder
. 我的代码运行良好,但似乎我在FutureProvider
. 我错过了什么?
主要.dart
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
FutureProvider<List<BillingData>>(
create: (context) => BillingDataService().getBillingData(),
),
],
child: MaterialApp(),
);
}
}
billing_data_service.dart
Future<List<BillingData>> getBillingData() async{
var dbClient = await locator.get<SQLService>().getDatabase;
var billingData = await dbClient.rawQuery(//some query here);
return billingData.map((e) => BillingData.fromDB(e)).toList();
}
Future<List<BillingData>> searchConcessionaire(String value) async{
var dbClient = await locator.get<SQLService>().getDatabase;
var searchResult = await dbClient.rawQuery(//some search query);
return searchResult.map((e) => BillingData.fromDB(e)).toList();
}
giveaire_screen.dart
Widget build(BuildContext context) {
List<BillingData> billingData = Provider.of<List<BillingData>>(context);
return Scaffold(
appBar: AppBar(),
body: (billingData == null)
? Center(
child: CircularProgressIndicator(),
)
: ListView.builder(
itemCount: billingData.length,
itemBuilder: (context, index) {
return ConcessionaireCard(
index: index,
fullName: billingData[index].fullName,
ctName: billingData[index].ctName,
mtrNo: billingData[index].mtrNo,
prevReading: billingData[index].prevReading,
curReading: billingData[index].curReading,
);
}),
,
);
}
解决方案
推荐阅读
- c# - pdf与itext合并
- ruby-on-rails - Rails + ActiveRecord:如何编写条件“一个或两个都不正确”?
- java - 我是否为“石头、纸、剪刀”游戏正确设置了我的方法?
- mongodb - 如何连接到monogdb
- react-native - 当列表更新时,React Native Video 从暂停状态播放
- prolog - Prolog中求和的解决方案
- node.js - Electron Webview 得到响应
- python - 使用 Beautifulsoup 抓取时如何删除多个空行
- python - 将枕头图像从 PDF 保存到 Google 云服务器
- dialogflow-es - 用户退出 Google 助理后,基本卡在哪里?