Untitled
unknown
plain_text
3 years ago
12 kB
5
Indexable
import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:gravid_mobile_app/bloc/cubit/home_screen_cubit.dart'; import 'package:gravid_mobile_app/bloc/cubit/register_screen_cubit.dart'; import 'package:gravid_mobile_app/constants/color_palette.dart'; import 'package:gravid_mobile_app/constants/dimens.dart'; import 'package:gravid_mobile_app/constants/strings.dart'; import 'package:gravid_mobile_app/data/remote/apis.dart'; import 'package:gravid_mobile_app/routes/route_names.dart'; import 'package:gravid_mobile_app/ui/screens/verify_logo.dart'; import 'package:gravid_mobile_app/ui/widgets/constant_widget.dart'; import 'package:gravid_mobile_app/utils/utils.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../Helper/sharedPreferences.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key, required String title}); @override State<LoginScreen> createState() => _LoginScreen(); } class _LoginScreen extends State<LoginScreen> { ///Creating a cubit instance RegisterScreenCubit? _loginScreenCubit; Map<String, dynamic> formData = <String, dynamic>{}; @override void initState() { super.initState(); ///Initialialising cubit and fetching posts at initstate ///Initstate is called before build function in flutter _loginScreenCubit = BlocProvider.of<RegisterScreenCubit>(context); _loginScreenCubit!.changeState(); //_homeScreenCubit?.getPosts(); } // @override // void dispose() { // ///Closing the cubit at dispose function // _loginScreenCubit!.close(); // // super.dispose(); // } @override Widget build(BuildContext context) { return Scaffold( body: Padding( padding: Dimens.regularPagePadding, ///Building a list of data with list got from api child: SingleChildScrollView( reverse: true, child: buildListBlocConsumer(), ), ), ); } BlocConsumer<RegisterScreenCubit, RegisterScreenState> buildListBlocConsumer() { return BlocConsumer<RegisterScreenCubit, RegisterScreenState>( listener: (BuildContext context, RegisterScreenState homeScreenState) { if (homeScreenState is LoadingFailed) { Utils.showSnackBar( context: context, message: homeScreenState.message); } else if(homeScreenState is Loading) { SizedBox( height: Utils.getScreenHeight(context) / 8, child: const Center( child: CircularProgressIndicator(), ), ); } else if(homeScreenState is LoadingSuccessful){ if (homeScreenState.posts == "Success") { print("hello world"); Navigator.pushReplacementNamed(context, RouteNames.verifyScreen, arguments: Strings.homeScreenText); // Navigator.pushReplacement(context, MaterialPageRoute(builder: (_) => VerifyScreen(title: "Verify Otp"))); } } }, builder: (BuildContext context, RegisterScreenState state) { print("---------------------------"); print(state); print("---------------------------"); // if (state is Initialized) { // print("stage 1"); // return Container( // child: Column( // children: <Widget>[ // SizedBox( // height: Utils.getScreenHeight(context) / 15.0, // ), // Center( // child: ConstantWidget.imageWidget( // 'lib/assets/images/login_logo.PNG', 300.0, 350.0, // Shape: BoxShape.rectangle), // ), // SizedBox(height: 20.0), // Center(child: _textWidget()), // SizedBox(height: 25.0), // Center( // child: Text( // "Enter your Mobile Number to Continue", // style: TextStyle( // fontSize: 14, // fontStyle: FontStyle.normal, // fontWeight: FontWeight.w500), // ), // ), // SizedBox(height: 40.0), // SizedBox( // height: 50, // width: 320, // child: Row( // children: <Widget>[ // Expanded( // flex: 1, // child: ConstantWidget.getTextFormBorderlinedField('+91', 'countryCode', formData) // ), // Expanded( // flex: 3, // child: ConstantWidget.getTextFormBorderlinedField('Phone Number', 'number', formData)), // // // SizedBox( // // child: Expanded( // // flex: 1, // // child: Text("")), // // ) // ], // ), // ), // SizedBox(height: 60.0), // Center( // child: ConstantWidget.elevationButton( // "NEXT", onLoginTap), // ), // ], // )); // } else if (state is Loading) { // return SizedBox( // height: Utils.getScreenHeight(context) / 8, // child: const Center( // child: CircularProgressIndicator(), // ), // ); // } else if (state is RegisterScreenLoaded) { // ///Creating list view with the data only after data is loaded // print("stage 3"); // return SizedBox( // height: Utils.getScreenHeight(context) / 8, // child: const Center( // child: CircularProgressIndicator(), // ), // ); // // } // // else if(state is LoadingSuccessful){ // // if (state.posts == "Success") { // // print("hello world"); // // Navigator.pushReplacementNamed(context, RouteNames.registrationScreen, // // arguments: Strings.homeScreenText); // // return Text("Success"); // // }else{ // // return Text("failure"); // // } // // } // // // else { // print("stage 2"); // return Container( // child: Column( // children: <Widget>[ // SizedBox( // height: Utils.getScreenHeight(context) / 15.0, // ), // Center( // child: ConstantWidget.imageWidget( // 'lib/assets/images/login_logo.PNG', 300.0, 350.0, // Shape: BoxShape.rectangle), // ), // SizedBox(height: 20.0), // Center(child: _textWidget()), // SizedBox(height: 25.0), // Center( // child: Text( // "Enter your Mobile Number to Continue", // style: TextStyle( // fontSize: 14, // fontStyle: FontStyle.normal, // fontWeight: FontWeight.w500), // ), // ), // SizedBox(height: 40.0), // SizedBox( // height: 50, // width: 320, // child: Row( // children: <Widget>[ // Expanded( // flex: 1, // child: ConstantWidget.getTextFormBorderlinedField('+91', 'countryCode', formData) // ), // Expanded( // flex: 3, // child: ConstantWidget.getTextFormBorderlinedField('Phone Number', 'number', formData)), // // // SizedBox( // // child: Expanded( // // flex: 1, // // child: Text("")), // // ) // ], // ), // ), // SizedBox(height: 60.0), // Center( // child: ConstantWidget.elevationButton( // "NEXT", onLoginTap), // ), // ], // )); // } return getLoginScreen(); }, ); } Color getColor(Set<MaterialState> states) { const Set<MaterialState> interactiveStates = <MaterialState>{ MaterialState.pressed, MaterialState.hovered, MaterialState.focused, }; if (states.any(interactiveStates.contains)) { return Colors.blue; } return Colors.red; } Widget getLoginScreen(){ return Container( child: Column( children: <Widget>[ SizedBox( height: Utils.getScreenHeight(context) / 15.0, ), Center( child: ConstantWidget.imageWidget( 'lib/assets/images/login_logo.PNG', 300.0, 350.0, Shape: BoxShape.rectangle), ), SizedBox(height: 20.0), Center(child: _textWidget()), SizedBox(height: 25.0), Center( child: Text( "Enter your Mobile Number to Continue", style: TextStyle( fontSize: 14, fontStyle: FontStyle.normal, fontWeight: FontWeight.w500), ), ), SizedBox(height: 40.0), SizedBox( height: 50, width: 320, child: Row( children: <Widget>[ Expanded( flex: 1, child: ConstantWidget.getTextFormBorderlinedField('+91', 'countryCode', formData) ), Expanded( flex: 3, child: ConstantWidget.getTextFormBorderlinedField('Phone Number', 'number', formData)), // SizedBox( // child: Expanded( // flex: 1, // child: Text("")), // ) ], ), ), SizedBox(height: 60.0), Center( child: ConstantWidget.elevationButton( "NEXT", onLoginTap), ), ], )); } Widget _textWidget() { return Text( "Sign in", style: TextStyle( fontSize: 24, fontStyle: FontStyle.normal, fontWeight: FontWeight.w600), ); //); } Future<void> onLoginTap() async { var phoneNumber = formData["countryCode"] + formData["number"]; SharedPreferences prefs = await SharedPreferences.getInstance(); prefs?.setString(SharedPref.Phone, formData["number"]); _loginScreenCubit?.postRequest(Apis.getOtpApi + phoneNumber, formData); } }
Editor is loading...