我们有一个包含两个按钮的封面。一个进入承包商的登录和注册页面,另一个按钮进入Hirer登录和注册。 为了检查用户是否已经登录到应用程序,我们使用wrapper.dart,其中包含以下代码:
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
print(user);
enter code here
if (user == null) {
return Authenticate();
} else {
return Home();
}
}
}
这是我们针对Contractorwrapper的代码片段。我们也为hirerWrapper提供了类似的服务。我们收到此错误:
/ flutter(23750):W小工具库引起的异常CA ═══════════════════════════ I / flutter(23750):在构建ContractorWrapper(dirty)时引发了以下ProviderNotFoundException: I / flutter(23750):错误:在此ContractorWrapper小部件上方找不到正确的提供程序
答案 0 :(得分:0)
假设类User
扩展了类ChangeNotifier
,则必须在ChangeNotifierProvider
上方添加一个MaterialApp
,以定义如何创建User
。
Here,您可以找到很好的指南,了解如何将Provider集成到您的应用中。
如下所示:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => User(),
child: MaterialApp(
home: Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text("First appbar"),
),
body: Text("content")),
),
);
}
}
//just an example
class User extends ChangeNotifier {
String _name;
set name(String value) {
_name = value;
notifyListeners();
}
String get name => _name;
}
如果不清楚,请随时提问。
答案 1 :(得分:0)
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => User())],
child: MaterialApp(
home: Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text("First appbar"),
),
body: Text("content")),
),
);
}
}