flutter - 找不到正确的提供者高于此消费者小部件
问题描述
我在 MVVM 架构中创建了一个应用程序,并使用 Provider 进行状态管理。当我启动应用程序时,我收到错误:
Could not find the correct Provider<GetPopResult> above this Consumer<GetPopResult> Widget.
我确实在应用程序顶部有 ChangeNofifierProvider,所以我不知道出了什么问题。
代码:
main.dart (ChangeNotifierProvider):
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => PopViewModel()),
],
child: MaterialApp(
title: 'Welcome to Flutter',
home: VisitPUDO(),
),
);
}
}
视图模型 (ChangeNotifier)
class PopViewModel with ChangeNotifier {
ApiResponse _apiResponse = ApiResponse.initial('Empty data');
GetPopResult? _getPopResult;
ApiResponse get response => _apiResponse;
GetPopResult? get getPopResult => _getPopResult;
Future<void> getPops(String username, String password, String filterBy, String query, String filter) async {
_apiResponse = ApiResponse.loading('Fetching data');
notifyListeners();
try {
GetPopResult result = await PopRepository().getPops(username, password, filterBy, query, filter);
_apiResponse = ApiResponse.completed(result);
} catch (e) {
_apiResponse = ApiResponse.error(e.toString());
print(e);
}
notifyListeners();
}
void setResult(GetPopResult? result) {
_getPopResult = result;
notifyListeners();
}
}
查看(消费者):
Flexible(
child: Consumer<GetPopResult>(builder: (context, result, child) {
if(result.pops.isNotEmpty)
return ListView.builder(
padding: EdgeInsets.all(8.0),
itemBuilder: (_, int index) => VisitPudoListviewItem(model: result.pops[index]),
itemCount: result.pops.length,
);
else
return Center(child: Text("No data"));
}),
),
解决方案
推荐阅读
- opencv - 如何在 yocto/poky 战士分支上获取 OpenCV 4.1.0?
- python - 使用现有 sqlite3 数据库创建新的 sqlite3 数据库
- javascript - 哪个是捕获点击操作发送的请求的好方法?
- reactjs - 如何知道组件的渲染时间
- angular - 使用 ngFor 和 ngClass 应用垫高
- ms-project - 在 Microsoft Project 中共同创作
- c# - Possible to make raycast detect only sides of an object?
- kubernetes - Ping 相同和不同 pod 中的其他 pod
- c# - GetMouseButtonDown C# 的问题
- ibm-mq - 如何在 IBM MQSeries 和 ActiveMQ Artemis 7.x 之间架起桥梁?