Тип аргумента «Контекст» не может быть назначен типу параметра «BuildContext» - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь создать страницу входа с флаттером и пожарной базой, навигатор работал правильно во всех файлах, но при переходе на эту страницу он показывает ошибку в контексте в навигаторе, ошибка:
'Тип аргумента' Контекст 'нельзя назначить параметру типа' BuildContext '. Ниже приведены сведения о моей версии флаттера: версия: 1.0.0 + 1

среда: sdk: "> = 2.1.0 <3.0.0" </p>

зависимости: flutter: sdk: flutter curved_navigation_bar: ^ 0.3.2 oktoast: firebase_auth: ^ 0.5.20 помогите мне решить эту проблему

 import 'package:path/path.dart';
    import 'package:codej/effects.dart';
    import 'package:flutter/material.dart';
    import 'package:oktoast/oktoast.dart';
    import 'package:firebase_auth/firebase_auth.dart';

    class Auth extends StatefulWidget {
      @override
    _AuthState createState() => new _AuthState();
    }

    class _AuthState extends State<Auth>{

    String _email, _password;
    final GlobalKey<FormState> formkey = GlobalKey<FormState>();
      Widget build(BuildContext context) {
        // TODO: implement build
        return Scaffold(appBar: AppBar(
          title: Text("Authentication"),
        ),
        // TODO: implement build
    body: Form(
      key: formkey,
      child: Column(
        children: <Widget>[
    TextFormField(
      validator: (input){
        if(input.isEmpty){
          showToastWidget(Text("please enter your user name"));
        }
      },
      onSaved: (input) => _email = input,
      decoration: InputDecoration(
        labelText: 'Email'
      ),
    ),
    TextFormField(
      validator: (input){
        if(input.length < 6){
          showToastWidget(Text("please enter your password atleast 6 characters"));
        }
      },
      onSaved: (input) => _password = input,
      decoration: InputDecoration(
        labelText: 'Password'
      ),
      obscureText: true,
    ),
    RaisedButton(onPressed: (){

    },
    child: Text("Sign in"),)
        ],
      )),
        );
      }
      void signinAuth() async{
        final formState = formkey.currentState;
        if(formState.validate()){
        formState.save();
        try{
     FirebaseUser user = await FirebaseAuth.instance.signInWithEmailAndPassword(email: _email, password: _password);
      Navigator.push(context, MaterialPageRoute(builder: (context) => BottomNav())); //BottomNav loacted in other file  
        }catch(e){
          print(e.message);
        }

        }

      }
    }

1 Ответ

0 голосов
/ 14 марта 2020

Это работает на моем p c, так что это проблема версии. Попробуйте обновить ваш флаттер и дартс SDK, если это не решение для вас, просто передайте BuildContext для вашего входа в систему, как это

void signinAuth(BuildContext context) async {
    final formState = formkey.currentState;
    if (formState.validate()) {
      formState.save();
      try {
        FirebaseUser user = await FirebaseAuth.instance
            .signInWithEmailAndPassword(email: _email, password: _password);
        Navigator.push(
            context,
            MaterialPageRoute(
                builder: (context) =>
                    BottomNav())); //BottomNav loacted in other file
      } catch (e) {
        print(e.message);
      }
    }
  }
...