简体   繁体   English

提供者问题:找不到正确的提供者<auth></auth>

[英]Problem with Provider: Could not find the correct Provider<Auth>

i permanently get this problem:我永久遇到这个问题:

Unhandled Exception: Error: Could not find the correct Provider above this Register Widget未处理的异常:错误:在此注册小部件上方找不到正确的提供程序

Since i am trying to implement User authentification, there is this bug.由于我正在尝试实现用户身份验证,因此存在此错误。

Here is my code:这是我的代码:

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',
                    border: OutlineInputBorder(),
                  ),
                  obscureText: true,
                  onChanged: (value) {
                    _authData['passwort'] = value;
                  },
                  validator: (value) {
                    if (value.isEmpty || value.length < 8) {
                      return "Zu kurz";
                    }
                  },
                ),
                TextFormField(
                    decoration: InputDecoration(
                      labelText: 'Passwort wiederholen',
                      border: OutlineInputBorder(),
                    ),
                    obscureText: true,
                    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)},
                )
              ],
            ),
          ));
    }));
  }
}

And the main class is here:而主要的class在这里:


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(),
        ));
  }
}

I am clueless what can I do to fix this error?我不知道我能做些什么来解决这个错误? Anytime i try something i doesnt work.任何时候我尝试一些我都不起作用的东西。

It is because your MyHomePage() class is not stated in your main.dart .这是因为您的MyHomePage() class 未在main.dart中说明。 Actually you can get rid of this class (since it is doing no job) and wrap class Register() with ChangeNotifierProvider in main.dart实际上你可以摆脱这个 class (因为它没有工作)并在main.dart中用ChangeNotifierProvider包装class Register()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM