flutter - 在另一个屏幕中访问 FutureProvider 时遇到问题
问题描述
我正在关注一个基本的 FutureProvider 示例,该示例截至 2020 年 3 月正在运行。我想知道 Provider 包是否发生了一些变化,因为尽管 Provider 似乎在同一条路线上,但我无法让我的主屏幕访问 Provider 对象。
我的 main.dart:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
final EmployeeService employeeService = EmployeeService();
@override
Widget build(BuildContext context) {
return FutureProvider(
initialData: null,
create: (context) => employeeService.fetchEmployees(),
catchError: (context, error) {
print(error.toString());
},
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Home(),
),
);
我的家.dart:
class Home extends StatelessWidget{
@override
Widget build(BuildContext context) {
List<Employee> employees = Provider.of<List<Employee>>(context);
return Scaffold(
appBar: AppBar(title: Text('Employees')),
body: (employees == null)? Center(child: CircularProgressIndicator(),) :
ListView.builder(itemCount: employees.length,
itemBuilder: (context, index){
return ListTile(
subtitle: Text(employees[index].email),
title: Text(employees[index].name),
);
},)
);
}
我的超级基本 EmployeeService 类...
class EmployeeService {
Future<List<Employee>> fetchEmployees() async{
var uri = Uri.parse('https://jsonplaceholder.typicode.com/users');
var response = await http.get(uri);
var jsonResponse = convert.jsonDecode(response.body) as List;
return jsonResponse.map((e) => Employee.fromJson(e)).toList();
我检查了 Flutter Inspector,小部件似乎排列正确。然而,我继续收到错误:
在构建 Home(dirty) 时引发了以下 ProviderNotFoundException:错误:在此 Home Widget 上方找不到正确的 Provider<List>
发生这种情况是因为您使用了BuildContext
不包括您选择的提供者的 。
对于我正在调用的 API 所设想的模型来说,这将是一种方便的方法,所以我只是想知道 FutureProvider 是否会发生一些变化。