我有一个无状态的小部件,它显示ListTiles的列表。 它从提供者那里获取数据并将其设置为最终数据。
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../providers/inspections.dart';
import '../widgets/inspection_list_tile.dart';
class ExistingInspectionsScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
Provider.of<Inspections>(context, listen: false).fetchAndSetInspections();
final inspections =
Provider.of<Inspections>(context, listen: false).inspections;
return Scaffold(
appBar: AppBar(
title: Text('Previous Inspections'),
),
body: Container(
child: ListView.builder(
itemCount: inspections.length,
itemBuilder: (context, index) {
return InspectionListTile(
inspection: inspections[index],
onTap: () {
Navigator.pushNamed(context, '/sections_list_screen',
arguments: {'report': inspections[index]});
},
);
}),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
return Navigator.pushNamed(context, '/create_inspection_screen');
},
child: Icon(Icons.add),
),
);
}
}
我加载此屏幕,列表为空,但是如果我弹出屏幕并重新加载列表,则该列表存在。 如何获取数据以在屏幕的第一次加载时显示。尽管尽管fetchAndSetInspections是提供程序中的异步方法,但它会使应用程序等待从sqlite数据库中检索数据。
import 'package:flutter/material.dart';
import '../models/inspection.dart';
import '../helpers/inspection_db_helper.dart';
class Inspections with ChangeNotifier {
List<Inspection> _inspections = [];
List<Inspection> get inspections {
return [..._inspections];
}
Future<void> fetchAndSetInspections() async {
final InspectionDBHelper inspectionDBHelper = InspectionDBHelper();
_inspections = await inspectionDBHelper.getInspections();
notifyListeners();
}
}
这似乎吸引了我很多,而且我似乎无法掌握发生的情况。
请帮助。