podcoder/forstat-mobile

model and catchError breaking my app

Opened this issue · 0 comments

import 'package:alummahbio/application/models/sign_in_form_model.dart';
import 'package:alummahbio/router/route_constants.dart';
import 'package:alummahbio/values/images.dart';
import 'package:flutter/material.dart';
import 'package:states_rebuilder/states_rebuilder.dart';

class SignInPage extends StatefulWidget {
SignInPage({Key key}) : super(key: key);

@OverRide
_SignInPageState createState() => _SignInPageState();
}

class _SignInPageState extends State {
// ignore: unused_field
final GlobalKey _key = GlobalKey();
@OverRide
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.transparent,
elevation: 0.0,
brightness: Brightness.light,
automaticallyImplyLeading: false,
),
body: Injector(
inject: [Inject(() => SignInFormModel())],
builder: (context) {
final singletonSignInFormModel =
Injector.getAsReactive();
return Container(
padding: EdgeInsets.all(16),
child: ListView(
children: [
Container(
height: 250,
child: Center(
child: Image.asset(Images.logo),
),
),
StateBuilder(
builder: (context, signInFormModel) {
return TextFormField(
onChanged: (String email) {
signInFormModel.setState(
(state) => state.setEmail(email),
catchError: true);
},
decoration: InputDecoration(
errorText: signInFormModel.hasError
? signInFormModel.error.message
: null,
prefixIcon: Icon(Icons.email),
hintText: "Enter your email/username",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
),
),
);
},
),
buildSizedBox(15),
StateBuilder(
builder: (
, signFormModel) {
return TextFormField(
onChanged: (String password) {
signFormModel.setState(
(state) => state.setPassword(password),
catchError: true);
},
obscureText: true,
decoration: InputDecoration(
errorText: signFormModel.hasError
? signFormModel.error.message
: null,
prefixIcon: Icon(Icons.lock),
hintText: "Enter your password",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30)),
),
);
},
),
buildSizedBox(15),
StateBuilder(
model: [singletonSignInFormModel],
builder: (
, model) {
return MaterialButton(
onPressed: () {
if (_singletonSignInFormModel.state.validateData()) {
// ignore: deprecated_member_use
_key.currentState.showSnackBar(SnackBar(
backgroundColor: Colors.red,
content: Text("Data is invalid"),
));
}
},
height: 55,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
color: Theme.of(context).primaryColor,
child: Center(
child: Text(
"Sign In",
style: TextStyle(color: Colors.white, fontSize: 20),
),
),
);
},
),
buildSizedBox(15),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("Don't have an account ?"),
// ignore: deprecated_member_use
FlatButton(
onPressed: () {
Navigator.pushNamed(context, signUpRoute);
},
child: Text(
"Sign Up",
style: TextStyle(color: Theme.of(context).primaryColor),
),
),
],
),
],
),
);
},
),
);
}

SizedBox buildSizedBox(double height) {
return SizedBox(
height: height,
);
}
}
Screenshot (80)