#android #firebase #flutter #mobile
#Android #firebase #флаттер #Мобильный
Вопрос:
иногда, когда я пытаюсь выполнить процесс входа с помощью firebase, я получаю эти ошибки:
W / DynamiteModule(8142): локальный класс дескриптора модуля для com.google.firebase.auth не найден.
I/FirebaseAuth(8142): [FirebaseAuth:] Подготовка к созданию подключения службы к реализации gms
D /FirebaseAuth(8142): уведомление слушателей токенов идентификатора о пользователе (skEEmC0dDBW9z73MsfShWX8M1iu1 ).
I / flutter (8142): Ошибка: NoSuchMethodError: метод ‘call’ был вызван при null.
I / flutter (8142): Receiver: null
I / flutter (8142): пытался вызвать: call()
Особенно, если я нажму на кнопку регистрации, чтобы вернуться к входу в систему. Может кто-нибудь объяснить, почему я получаю эту ошибку и как я могу ее исправить: вот код:
class LoginPage extends StatefulWidget{
static const routeName = '/login';
LoginPage({this.onSignedIn});
final VoidCallback onSignedIn;
@override
State<StatefulWidget> createState() => new _LoginPageState();
}
enum FormType {
login,
}
class _LoginPageState extends State <LoginPage> {
final formKey = new GlobalKey<FormState>();
String _email,_password;
bool validateAndSave(){
final form = formKey.currentState;
if(form.validate()){
form.save();
return true;
}
return false;
}
void validateAndSubmit() async{
if(validateAndSave()){
try{
await FirebaseAuth.instance.signInWithEmailAndPassword(email: _email, password: _password);
widget.onSignedIn();
}catch (e){
print('Error:$e');
}
}
}
void moveToRegister() {
Navigator.of(context).pushReplacementNamed(RegisterPage.routeName);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
title:new Text ('',
style: new TextStyle(color:Colors.white, fontWeight:FontWeight.bold)
),
backgroundColor: Color(0xff04346c),
),
body: Stack (
children:<Widget>[
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
Color(0xff04a3b3),
Color(0xff04a3b3),
Color(0xff04a3b3),
Color(0xff04a3b3),
]
)
),
),
Center(
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0)
),
child: Container(
height:350,
width:350,
padding: EdgeInsets.all(16.0),
child: Form(
key:formKey,
child: new Column(
children:
buildInputs() buildSubmitButtons(),
)
)
)
)
)
],
),
);
}
List<Widget> buildInputs(){
return [
Image.asset('imageapp/myimage.png',height:50,width: 250,),
new TextFormField(
decoration: new InputDecoration(labelText: 'Email',
icon: new Icon (Icons.email)
),
onSaved: (value) => _email = value,
),
new TextFormField(
decoration: new InputDecoration (labelText: 'Password',
icon: new Icon (Icons.lock)
),
obscureText: true,
onSaved: (value) => _password = value,
),
];
}
List<Widget> buildSubmitButtons(){
return [
Padding(padding: EdgeInsets.all(3.0)),
new RaisedButton(
child: new Text('Login',style: new TextStyle(fontSize:18.0,color: Colors.white),
),
color: Color(0xff04346c),
shape: RoundedRectangleBorder(
borderRadius : new BorderRadius.circular(30.0)
),
onPressed: validateAndSubmit
),
new FlatButton(
onPressed: moveToRegister,
child: new Text('Create an account',style: new TextStyle(fontSize:13.0),)
)
];
}
}
Ответ №1:
Проблема была в этом
widget.onSignedIn();
Я изменил его на Навигацию…. (На страницу информационной панели)