【发布时间】:2020-03-24 20:04:33
【问题描述】:
我正在尝试将提供程序与模板一起使用,但 Provider.of 似乎不能那样工作。
日志:
══╡ 小部件库发现异常 ╞═════════════════════════════════════════════════ ══════════ 以下 ProviderNotFoundError 被抛出构建 MyChildWidget(脏):错误:找不到正确的 此 MyChildWidget Widget 上方的提供者
要修复,请:
- 确保 Provider 是此 MyChildWidget 小部件的祖先
- 向 Provider 提供类型
- 向消费者提供类型
- 向 Provider.of() 提供类型
- 始终使用包导入。例如:`import 'package:my_app/my_code.dart';
- 确保使用了正确的
context。
你知道有什么解决办法吗?
显示问题的示例:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Provider<MyChildState>.value(
value: MyChildState("Hello world !"),
child: MaterialApp(
home: MyChildWidget(),
)),
);
}
}
abstract class MyParentWidget<State extends MyParentState> extends StatelessWidget {
@override
Widget build(BuildContext context) {
final State state = Provider.of(context);
return Text(state.text);
}
}
abstract class MyParentState {
final String text;
MyParentState(this.text);
}
class MyChildWidget<MyChildState> extends MyParentWidget{
}
class MyChildState extends MyParentState {
MyChildState(String text) : super(text);
}
【问题讨论】:
标签: flutter dart flutter-provider