如何解决提供者问题:找不到正确的提供者<Auth>
我一直遇到这个问题:
未处理的异常:错误:在此注册小部件上方找不到正确的提供程序
由于我正在尝试实施用户身份验证,因此存在此错误。
这是我的代码:
import 'package:flutter/material.dart';
import 'konto.dart';
import 'package:studyIT/providers/auth.dart';
import 'package:provider/provider.dart';
class Register extends StatefulWidget {
@override
_RegisterAnsichtState createState() => _RegisterAnsichtState();
}
class _RegisterAnsichtState extends State<Register> {
final _formKey = GlobalKey<FormState>();
Map<String,String> _authData = {
'email': '','passwort': '',};
var _isLoading = false;
Future<void> _submit() async {
if (!_formKey.currentState.validate()) {
// Invalid!
return;
}
_formKey.currentState.save();
setState(() {
_isLoading = true;
});
await Provider.of<Auth>(context,listen: false).registrieren(
_authData['email'],_authData['password'],);
setState(() {
_isLoading = false;
});
}
@override
Widget build(BuildContext build) {
return Scaffold(body: Builder(builder: (BuildContext context) {
return Form(
key: _formKey,child: Padding(
padding: const EdgeInsets.all(50),child: Column(
mainAxisAlignment: MainAxisAlignment.start,children: <Widget>[
TextFormField(
onChanged: (value) {
_authData['email'] = value;
},validator: (value) {
if (value.isEmpty ||
!value.contains('@student.tgm.ac.at')) {
return "Ungültig";
}
},keyboardType: TextInputType.text,autocorrect: false,decoration: InputDecoration(
labelText: 'E-Mail',border: OutlineInputBorder(),),TextFormField(
decoration: InputDecoration(
labelText: 'Passwort',obscureText: true,onChanged: (value) {
_authData['passwort'] = value;
},validator: (value) {
if (value.isEmpty || value.length < 8) {
return "Zu kurz";
}
},TextFormField(
decoration: InputDecoration(
labelText: 'Passwort wiederholen',validator: (value) {
if (value != _authData['passwort']) {
return "Ungültige Passwörter";
}
}),SizedBox(width: 25),RaisedButton(
color: Colors.blue,textColor: Colors.white,child: Text('Registrieren'),onPressed: () => _submit(),// {addName(_name)},)
],));
}));
}
}
主类在这里:
import 'package:flutter/material.dart';
import 'package:studyIT/RegisterAnsicht.dart';
import 'package:studyIT/providers/auth.dart';
import 'package:provider/provider.dart';
import 'package:studyIT/providers/test.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,visualDensity: VisualDensity.adaptivePlatformDensity,home: Register(),);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key,this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (BuildContext context) {
Auth();
},child: MaterialApp(
home: Register(),));
}
}
我不知道我该怎么做才能解决这个错误?任何时候我尝试一些我不起作用的东西。
解决方法
这是因为您的 MyHomePage()
类没有在您的 main.dart
中说明。实际上你可以摆脱这个类(因为它没有工作)并在class Register()
ChangeNotifierProvider
包裹main.dart
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。