Я получаю эту ошибку, когда пытаюсь изменить состояние виджета, определяя пользовательскую функцию для установки состояния, а затем я вызываю эту функцию из нового созданного мной класса.
setState () вызывается в конструкторе: _MyHomePageState # da7 cc (состояние жизненного цикла: создано, нет виджета, не смонтировано)
HomePage:
import 'package:flutter/material.dart';
import 'package:ed_cell/auth_service.dart';
import 'package:flutter/scheduler.dart';
Widget authStatus = Text('Welcome');
class MyHomePage extends StatefulWidget {
_MyHomePageState myHomePageState= new _MyHomePageState();
@override
_MyHomePageState createState() => myHomePageState;
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return ListView(
children: [
Container(
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(10)),
height: 575,
child: Row(
children: <Widget>[
Column(
children: [
Expanded(
child: Image.asset(
'assets/images/rocket.png',
),
),
],
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(
'U create\nWe support',
style:
TextStyle(fontSize: 80, fontWeight: FontWeight.bold),
),
authStatus,
],
),
),
],
),
),
],
);
}
void onAuthChange() {
var x=AuthService().status;
if (AuthService().status == 'Sucessful Sign In') {
setState(() {
authStatus = Text(
'Welcome',
style: TextStyle(color: Colors.grey, fontSize: 50),
);
print(x);
});
print('object'+x);
} else {
setState(() {
authStatus = RaisedButton(
onPressed: null,
color: Colors.deepOrange,
child: Text(
'Join Now',
style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
),
);
});
}
}
}
AuthService:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:ed_cell/home_page.dart';
class AuthService{
String status;
signIn(email,password){
FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password).then((user){
print('Signed In '+user.user.uid);
status='Sucessful Sign In';
}).catchError((e){
status='Failure in Sign In';
print(e);
});
MyHomePage().myHomePageState.onAuthChange();
}
}