Я показал закусочную после неправильного входа в систему во флаттере. Но после появления один раз закусочная появляется снова, даже не нажимая кнопку отправки. Где я делаю неправильно? Пожалуйста помоги. Вот мой код ниже. В части snapshot.data.status == '2' я показываю закусочную. Я хочу, чтобы закусочная отображалась только тогда, когда вход в систему не выполнен, то есть когда snapshot.data.status == '2' удовлетворяет.
class MyApp extends StatefulWidget {
final UserDataStorage storage;
MyApp({Key key, @required this.storage}) : super(key: key);
@override
State<StatefulWidget> createState() {
return _TextControl();
}
}
class _TextControl extends State<MyApp> {
final _formKey = GlobalKey<FormState>();
bool snackBarActive = false;
@override
void initState() {
super.initState();
widget.storage.readCounter().then((int value) {
if (value > 0) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TextInput(storage: GetDataStorage())),
);
}
});
}
final TextEditingController _controller = TextEditingController();
final TextEditingController _controller2 = TextEditingController();
@override
void dispose() {
_controller.dispose();
_controller2.dispose();
super.dispose();
}
Future<Login> _futureLogin;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
backgroundColor: Colors.purple[400],
title: Text('Login'),
),
body: Container(
padding: EdgeInsets.only(left: 15, top: 20, right: 15, bottom: 20),
child: Column(
children: <Widget>[
Center(
child: Image(image: AssetImage('assets/images/logo.png')),
),
Container(
padding: EdgeInsets.only(left: 0, top: 20, right: 0, bottom: 0),
child: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Column(
children: <Widget>[
TextFormField(
controller: _controller,
decoration: InputDecoration(hintText: 'Email'),
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (value.isEmpty || !value.isValidEmail()) {
return 'Please enter valid email.';
}
return null;
},
),
TextFormField(
controller: _controller2,
decoration: InputDecoration(hintText: 'Password'),
obscureText: true,
validator: (value) {
if (value.isEmpty) {
return 'Please enter password.';
}
return null;
},
),
Container(
margin: EdgeInsets.only(top: 10.0),
child: RaisedButton(
color: Colors.purple[400],
padding: EdgeInsets.only(
left: 130, top: 10, right: 130, bottom: 10),
textColor: Colors.white,
onPressed: () {
if (_formKey.currentState.validate()) {
setState(() {
_futureLogin = userLogin(
_controller.text, _controller2.text);
});
Scaffold.of(context)
.removeCurrentSnackBar();
}
},
child: Text('Login',
style: TextStyle(fontSize: 18.0)),
),
),
],
),
(_futureLogin != null)
? FutureBuilder<Login>(
future: _futureLogin,
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data.status == '1') {
widget.storage
.writeCounter(snapshot.data.usrid);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TextInput(
storage: GetDataStorage())),
);
} else if (snapshot.data.status == '2') {
snackBarActive = true;
if (snackBarActive) {
Scaffold.of(context)
.showSnackBar(SnackBar(
content: Text(
"Invalid login credentials.",
style: TextStyle(
color: Colors.red[100])),
))
.closed
.whenComplete(() {
setState(() {
snackBarActive = false;
});
});
}
return Text('');
}
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return Center(
child: CircularProgressIndicator());
},
)
: Text(''),
],
)),
),
],
)),
);
}
}