diff --git a/lib/core/presentation/theming/colors/colors.dart b/lib/core/presentation/theming/colors/colors.dart index 1a1ddea..45a1582 100644 --- a/lib/core/presentation/theming/colors/colors.dart +++ b/lib/core/presentation/theming/colors/colors.dart @@ -15,6 +15,8 @@ class _AppColors { static Color onSurfaceW = Color(0xfff7f7f7); // const Color(0xff808191); static Color greyLight = Color(0xFFABABAB); + static Color lightGrey = Color(0xffA7A7A7); + static Color getShade(Color color, {bool darker = false, double value = .1}) { assert(value >= 0 && value <= 1, 'verify domain interval'); diff --git a/lib/core/presentation/theming/themes/light_theme.dart b/lib/core/presentation/theming/themes/light_theme.dart index 9327645..ba77ae2 100644 --- a/lib/core/presentation/theming/themes/light_theme.dart +++ b/lib/core/presentation/theming/themes/light_theme.dart @@ -35,8 +35,8 @@ ThemeData whiteTheme(BuildContext context, BoxConstraints cts) { .green, // set to odd color so we can see which component in the UI is affected inversePrimary: Colors .yellow, // set to odd color so we can see which component in the UI is affected - outline: Colors - .purple, // set to odd color so we can see which component in the UI is affected + outline: _AppColors + .lightGrey, // set to odd color so we can see which component in the UI is affected surface: _AppColors.bgColorW, onSurface: _AppColors.onSurfaceW, background: _AppColors.bgColorW, diff --git a/lib/core/presentation/widget/confirmation_screen_actions.dart b/lib/core/presentation/widget/confirmation_screen_actions.dart new file mode 100644 index 0000000..fd6b32f --- /dev/null +++ b/lib/core/presentation/widget/confirmation_screen_actions.dart @@ -0,0 +1,77 @@ +import 'package:flutter/material.dart'; +import 'package:fpb/core/presentation/widget/fpb_button.dart'; +import 'package:fpb/l10n/l10n.dart'; + +class ConfirmationScreenAction extends StatelessWidget { + const ConfirmationScreenAction({ + Key? key, + required this.confirmButtonLabel, + required this.onTapConfirmButton, + required this.onTapContactUsButton, + }) : super(key: key); + + final String confirmButtonLabel; + final void Function() onTapConfirmButton; + final void Function() onTapContactUsButton; + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + final theme = Theme.of(context); + final style = theme.textTheme; + final colors = theme.colorScheme; + + return LayoutBuilder(builder: (context, box) { + return Container( + height: box.maxHeight * .17, + width: box.maxWidth, + decoration: BoxDecoration( + color: colors.secondary, + ), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: box.maxHeight * .035), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + FpbButton( + label: confirmButtonLabel, + onTap: onTapConfirmButton, + backgroundColor: colors.scrim, + borderSideColor: colors.outline, + textColor: colors.outline, + ), + SizedBox( + height: box.maxHeight * .03, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + l10n.confirmPhoneNumberNeedHelpLink, + style: style.labelMedium?.copyWith( + color: colors.outline, + fontSize: 12.0, + ), + ), + InkWell( + child: Text( + l10n.confirmPhoneNumberContactUs, + style: style.labelMedium?.copyWith( + fontWeight: FontWeight.w700, + color: theme.colorScheme.onSurface, + fontSize: 12.0, + ), + ), + onTap: onTapContactUsButton, + ), + ], + ) + ], + ), + ), + ); + }); + } +} diff --git a/lib/core/presentation/widget/confirmation_screen_illustration.dart b/lib/core/presentation/widget/confirmation_screen_illustration.dart new file mode 100644 index 0000000..8dd1ea1 --- /dev/null +++ b/lib/core/presentation/widget/confirmation_screen_illustration.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:fpb/assets/fpb_svg.dart'; + +class ConfirmationScreenIllustration extends StatelessWidget { + const ConfirmationScreenIllustration({ + super.key, + required this.box, + }); + + final BoxConstraints box; + + @override + Widget build(BuildContext context) { + return Container( + height: box.maxHeight * .23, + width: box.maxWidth, + child: SvgPicture.asset( + SvgNames.emailConfirmation, + width: box.maxWidth, + height: 0.25 * box.maxHeight, + ), + ); + } +} diff --git a/lib/core/presentation/widget/my_button.dart b/lib/core/presentation/widget/fpb_button.dart similarity index 56% rename from lib/core/presentation/widget/my_button.dart rename to lib/core/presentation/widget/fpb_button.dart index 7540718..5d0b417 100644 --- a/lib/core/presentation/widget/my_button.dart +++ b/lib/core/presentation/widget/fpb_button.dart @@ -10,6 +10,9 @@ class FpbButton extends StatelessWidget { this.width, this.leading, this.spaceAround = false, + this.backgroundColor, + this.borderSideColor, + this.textColor, }); final String label; @@ -19,17 +22,16 @@ class FpbButton extends StatelessWidget { final double? width; final Widget? leading; final bool spaceAround; + final Color? backgroundColor; + final Color? borderSideColor; + final Color? textColor; @override Widget build(BuildContext context) { - final text = Text( - label, - style: Theme.of(context).textTheme.titleMedium?.copyWith( - color: Colors.white, - // fontWeight: FontWeight.w400, - ), - ); final size = MediaQuery.of(context).size; + final theme = Theme.of(context); + final colors = theme.colorScheme; + return SizedBox( width: width ?? size.width, height: height ?? size.height * 0.075, @@ -41,13 +43,14 @@ class FpbButton extends StatelessWidget { ? MainAxisAlignment.spaceAround : MainAxisAlignment.spaceBetween, children: [ - leading != null - ? Transform.translate( - offset: const Offset(-10, 0), - child: leading, - ) - : const SizedBox.shrink(), - text, + leading ?? const SizedBox.shrink(), + Text( + label, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + color: textColor ?? colors.surface, + // fontWeight: FontWeight.w400, + ), + ), if (trailing != null) Transform.translate( offset: const Offset(-15, 0), @@ -57,6 +60,17 @@ class FpbButton extends StatelessWidget { const SizedBox.shrink() ], ), + style: ButtonStyle( + backgroundColor: + MaterialStateProperty.all(backgroundColor ?? colors.error), + side: MaterialStateProperty.all( + BorderSide( + color: borderSideColor ?? colors.error, + width: 1.0, + style: BorderStyle.solid), + ), + elevation: MaterialStateProperty.all(0.0), + ), ), ); } diff --git a/lib/core/presentation/widget/my_textformfield.dart b/lib/core/presentation/widget/fpb_text_form_field.dart similarity index 100% rename from lib/core/presentation/widget/my_textformfield.dart rename to lib/core/presentation/widget/fpb_text_form_field.dart diff --git a/lib/core/presentation/widget/otp_group_text_field.dart b/lib/core/presentation/widget/otp_group_text_field.dart new file mode 100644 index 0000000..1dc49ec --- /dev/null +++ b/lib/core/presentation/widget/otp_group_text_field.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:fpb/core/presentation/widget/otp_input.dart'; + +class OtpGroupTextField extends StatelessWidget { + const OtpGroupTextField({ + super.key, + required this.box, + }); + + final BoxConstraints box; + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Wrap( + children: [ + OtpInput( + box: box, + ), + OtpInput( + box: box, + ), + OtpInput( + box: box, + ), + OtpInput( + box: box, + ), + OtpInput( + box: box, + ), + OtpInput( + box: box, + ), + ], + ), + ], + ); + } +} diff --git a/lib/core/presentation/widget/otp_input.dart b/lib/core/presentation/widget/otp_input.dart new file mode 100644 index 0000000..93ddf12 --- /dev/null +++ b/lib/core/presentation/widget/otp_input.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; + +class OtpInput extends StatelessWidget { + const OtpInput({ + super.key, + required this.box, + }); + + final BoxConstraints box; + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final colors = theme.colorScheme; + + return Padding( + padding: EdgeInsets.symmetric(horizontal: box.maxHeight * .0065), + child: Container( + height: box.maxHeight * .065, + width: box.maxWidth * .12, + child: Flexible( + fit: FlexFit.loose, + child: TextFormField( + cursorColor: colors.scrim, + textAlign: TextAlign.center, + decoration: InputDecoration( + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(box.maxHeight * .15))), + ), + ), + ), + ); + } +} diff --git a/lib/email_confirmation/email_confirmation.dart b/lib/email_confirmation/email_confirmation.dart index 8059d8f..adf534a 100644 --- a/lib/email_confirmation/email_confirmation.dart +++ b/lib/email_confirmation/email_confirmation.dart @@ -1 +1 @@ -export 'view/email_confirmation_page.dart'; +export 'view/email_confirmation_screen.dart'; diff --git a/lib/email_confirmation/view/email_confirmation_page.dart b/lib/email_confirmation/view/email_confirmation_page.dart deleted file mode 100644 index 6dbbb4d..0000000 --- a/lib/email_confirmation/view/email_confirmation_page.dart +++ /dev/null @@ -1,215 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:fpb/assets/fpb_svg.dart'; -import 'package:fpb/core/presentation/widget/my_button.dart'; -import 'package:fpb/l10n/l10n.dart'; - -class EmailConfirmationScreen extends StatefulWidget { - static const routeName = '/emailConfirmation'; - - const EmailConfirmationScreen({super.key}); - - @override - State createState() => - _EmailConfirmationScreenState(); -} - -class _EmailConfirmationScreenState extends State { - @override - Widget build(BuildContext context) { - final l10n = context.l10n; - final theme = Theme.of(context); - final style = theme.textTheme; - final colors = theme.colorScheme; - - return LayoutBuilder( - builder: (context, box) { - return Scaffold( - backgroundColor: colors.background, - body: SafeArea( - child: Stack( - children: [ - Container( - height: box.maxHeight * .5, - width: box.maxWidth, - child: Container( - child: Padding( - padding: EdgeInsets.only( - left: box.maxHeight * .025, - right: box.maxHeight * .025), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - 'Confirm your', - style: style.titleLarge - ?.copyWith(fontSize: box.maxHeight * .045), - ), - SizedBox( - height: box.maxHeight * .01, - ), - Text( - l10n.signInEmailLogInLabel, - style: style.titleLarge - ?.copyWith(fontSize: box.maxHeight * .045), - ), - SizedBox( - height: box.maxHeight * .01, - ), - RichText( - maxLines: 3, - text: TextSpan(children: [ - TextSpan( - text: - 'We\'ve sent you a confirmation email containing your ', - style: style.titleMedium, - ), - TextSpan( - text: 'validation code. ', - style: style.titleMedium?.copyWith( - fontWeight: FontWeight.w600, - //color: theme.colorScheme.onSurface - ), - ), - TextSpan( - text: 'Please enter the code.', - style: style.titleMedium) - ])), - SizedBox( - height: box.maxHeight * .05, - ), - Row( - children: [ - Wrap(children: [ - confirmation_input( - box: box, - ), - confirmation_input( - box: box, - ), - confirmation_input( - box: box, - ), - confirmation_input( - box: box, - ), - confirmation_input( - box: box, - ), - confirmation_input( - box: box, - ), - ]), - ], - ), - ], - ), - ), - ), - ), - Align( - alignment: Alignment.bottomCenter, - child: Column( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Container( - height: box.maxHeight * .2, - width: box.maxWidth, - child: SvgPicture.asset( - SvgNames.emailConfirmation, - width: box.maxWidth, - height: 0.25 * box.maxHeight, - ), - ), - Container( - height: box.maxHeight * .2, - width: box.maxWidth, - decoration: BoxDecoration( - color: colors.secondary, - ), - child: Padding( - padding: EdgeInsets.symmetric( - horizontal: box.maxHeight * .035), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - FpbButton( - // style: ButtonStyle( - // textStyle: MaterialStateProperty.all( - // style.titleMedium - // ?.copyWith(color: colors.onSurface), - // ), - // shape: MaterialStateProperty.all( - // RoundedRectangleBorder( - // borderRadius: BorderRadius.circular( - // box.maxHeight * .02)), - // ), - // side: MaterialStateProperty.all( - // BorderSide(color: colors.background)), - // backgroundColor: - // MaterialStateProperty.all( - // colors.secondary, - // )), - label: 'Resend confirmation email', - onTap: () {}), - Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - 'Need help?', - style: style.labelMedium - ?.copyWith(color: colors.onSurface), - ), - TextButton( - onPressed: () {}, - child: Text( - 'Contact us', - style: style.labelMedium?.copyWith( - fontWeight: FontWeight.w600, - color: theme.colorScheme.onSurface), - )) - ], - ) - ], - ), - ), - ), - ], - ), - ) - ], - ), - ), - ); - }, - ); - } -} - -class confirmation_input extends StatelessWidget { - const confirmation_input({ - super.key, - required this.box, - }); - - final BoxConstraints box; - - @override - Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: box.maxHeight * .0075), - child: Container( - height: box.maxHeight * .065, - width: box.maxWidth * .12, - child: TextFormField( - decoration: InputDecoration( - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(box.maxHeight * .15))), - ), - ), - ); - } -} diff --git a/lib/email_confirmation/view/email_confirmation_screen.dart b/lib/email_confirmation/view/email_confirmation_screen.dart new file mode 100644 index 0000000..cc85044 --- /dev/null +++ b/lib/email_confirmation/view/email_confirmation_screen.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'package:fpb/core/presentation/widget/confirmation_screen_illustration.dart'; +import 'package:fpb/core/presentation/widget/otp_group_text_field.dart'; +import 'package:fpb/l10n/l10n.dart'; +import 'package:fpb/core/presentation/widget/confirmation_screen_actions.dart'; + +class EmailConfirmationScreen extends StatefulWidget { + static const routeName = '/emailConfirmation'; + + const EmailConfirmationScreen({super.key}); + + @override + State createState() => + _EmailConfirmationScreenState(); +} + +class _EmailConfirmationScreenState extends State { + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + final theme = Theme.of(context); + final style = theme.textTheme; + final colors = theme.colorScheme; + + return LayoutBuilder( + builder: (context, box) { + return Scaffold( + resizeToAvoidBottomInset: false, + backgroundColor: colors.background, + body: Stack( + children: [ + SingleChildScrollView( + child: Padding( + padding: EdgeInsets.only( + left: box.maxHeight * .025, right: box.maxHeight * .025), + child: Column( + children: [ + SizedBox( + height: box.maxHeight * .15, + ), + Text( + l10n.confirmEmailTitleText, + style: style.titleLarge + ?.copyWith(fontSize: box.maxHeight * .045), + textAlign: TextAlign.center, + ), + SizedBox( + height: box.maxHeight * .03, + ), + RichText( + maxLines: 3, + textAlign: TextAlign.center, + text: TextSpan(children: [ + TextSpan( + text: l10n.confirmEmailBodyContentStart, + style: style.titleMedium, + ), + TextSpan( + text: l10n.confirmPhoneNumberBodyContentMid, + style: style.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + //color: theme.colorScheme.onSurface + ), + ), + TextSpan( + text: l10n.confirmPhoneNumberBodyContentEnd, + style: style.titleMedium) + ])), + SizedBox( + height: box.maxHeight * .05, + ), + OtpGroupTextField( + box: box, + ), + SizedBox( + height: box.maxHeight * .05, + ), + ConfirmationScreenIllustration( + box: box, + ), + ], + ), + ), + ), + Align( + alignment: Alignment.bottomCenter, + child: ConfirmationScreenAction( + onTapConfirmButton: () {}, + confirmButtonLabel: l10n.confirmEmailResendButton, + onTapContactUsButton: () {}, + ), + ) + ], + ), + ); + }, + ); + } +} diff --git a/lib/home/view/budget_screen.dart b/lib/home/view/budget_screen.dart index ebbed96..d07f490 100644 --- a/lib/home/view/budget_screen.dart +++ b/lib/home/view/budget_screen.dart @@ -2,6 +2,7 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:fpb/core/presentation/animations/circular_slider_animation/double_circular_slider.dart'; +import 'package:fpb/core/presentation/widget/fpb_button.dart'; import 'package:fpb/home/view/widgets/custom_appbar.dart'; import 'package:fpb/authentication_with_firebase/application/bloc/auth_bloc.dart'; import 'package:fpb/core/domain/user.dart'; @@ -10,8 +11,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fpb/home/view/widgets/different_categories.dart'; import 'package:fpb/home/view/widgets/latest_budget_activity.dart'; -import '../../core/presentation/widget/my_button.dart'; - class BudgetScreen extends StatefulWidget { const BudgetScreen({super.key}); diff --git a/lib/home/view/widgets/search_input.dart b/lib/home/view/widgets/search_input.dart index 92873b0..9202d57 100644 --- a/lib/home/view/widgets/search_input.dart +++ b/lib/home/view/widgets/search_input.dart @@ -3,7 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fpb/core/application/search_user_bloc/search_user_bloc.dart'; import 'package:fpb/core/application/search_user_bloc/search_user_state.dart'; import 'package:fpb/core/domain/user.dart'; -import 'package:fpb/core/presentation/widget/my_textformfield.dart'; +import 'package:fpb/core/presentation/widget/fpb_text_form_field.dart'; class SearchInputWidget extends StatelessWidget { const SearchInputWidget({super.key, required this.box, this.textController}); diff --git a/lib/injection.config.dart b/lib/injection.config.dart index 41bc4d3..702ab0c 100644 --- a/lib/injection.config.dart +++ b/lib/injection.config.dart @@ -13,49 +13,55 @@ import 'package:firebase_auth/firebase_auth.dart' as _i7; import 'package:firebase_core/firebase_core.dart' as _i6; import 'package:flutter_facebook_auth/flutter_facebook_auth.dart' as _i5; import 'package:fpb/authentication_mock_without_backend/application/bloc/authentication_bloc.dart' - as _i17; + as _i19; import 'package:fpb/authentication_mock_without_backend/infrastructure/authentication_mock_module_injection.dart' - as _i30; + as _i33; import 'package:fpb/authentication_with_facebook/application/facebook_auth_bloc.dart' - as _i19; + as _i21; import 'package:fpb/authentication_with_facebook/domain/i_facebook_repository_facade.dart' as _i10; import 'package:fpb/authentication_with_facebook/infrastructure/facebook_auth_repository.dart' as _i11; import 'package:fpb/authentication_with_facebook/infrastructure/facebook_authentication_injectable_module.dart' - as _i32; + as _i35; import 'package:fpb/authentication_with_firebase/application/bloc/auth_bloc.dart' - as _i24; + as _i27; import 'package:fpb/authentication_with_firebase/domain/i_auth_facade.dart' - as _i21; + as _i24; import 'package:fpb/authentication_with_firebase/infrastructure/firebase_auth_facade_impl.dart' - as _i22; + as _i25; import 'package:fpb/authentication_with_firebase/infrastructure/firebase_auth_injectable_module.dart' - as _i31; + as _i34; import 'package:fpb/authentication_with_google/application/google_auth_bloc/google_sign_in_bloc.dart' - as _i20; + as _i23; import 'package:fpb/authentication_with_google/domain/i_google_repository_facade.dart' - as _i12; + as _i14; import 'package:fpb/authentication_with_google/infrastructure/google_authentication_injectable_module.dart' - as _i28; + as _i31; import 'package:fpb/authentication_with_google/infrastructure/google_authentication_repository.dart' - as _i13; + as _i15; import 'package:fpb/core/application/email_password_bloc/email_password_bloc.dart' - as _i25; + as _i28; import 'package:fpb/core/application/internet_and_time_bloc/internet_and_time_bloc.dart' - as _i27; -import 'package:fpb/core/infrastructure/core_injectable_module.dart' as _i29; -import 'package:fpb/core/settings/app_settings_helper.dart' as _i23; -import 'package:fpb/core/settings/cached.dart' as _i18; + as _i30; +import 'package:fpb/core/infrastructure/core_injectable_module.dart' as _i32; +import 'package:fpb/core/settings/app_settings_helper.dart' as _i26; +import 'package:fpb/core/settings/cached.dart' as _i20; +import 'package:fpb/forgot_password_flow/application/bloc/forgot_password_bloc.dart' + as _i22; +import 'package:fpb/forgot_password_flow/domain/i_forgot_password_facade.dart' + as _i12; +import 'package:fpb/forgot_password_flow/infrastructure/forgot_password_repository.dart' + as _i13; import 'package:fpb/home/application/home_view_bloc/home_view_bloc.dart' - as _i26; + as _i29; import 'package:get_it/get_it.dart' as _i1; import 'package:google_sign_in/google_sign_in.dart' as _i9; import 'package:injectable/injectable.dart' as _i2; -import 'package:ntp/ntp.dart' as _i14; -import 'package:shared_preferences/shared_preferences.dart' as _i15; +import 'package:ntp/ntp.dart' as _i16; +import 'package:shared_preferences/shared_preferences.dart' as _i17; import 'package:user_repository/user_repository.dart' - as _i16; // ignore_for_file: unnecessary_lambdas + as _i18; // ignore_for_file: unnecessary_lambdas // ignore_for_file: lines_longer_than_80_chars extension GetItInjectableX on _i1.GetIt { @@ -98,56 +104,66 @@ extension GetItInjectableX on _i1.GetIt { gh<_i5.FacebookAuth>(), gh<_i7.FirebaseAuth>(), )); - gh.lazySingleton<_i12.IGoogleRepositoryFacade>( - () => _i13.GoogleAuthenticationRepository( + gh.lazySingleton<_i12.IForgotPasswordRepositoryFacade>( + () => _i13.ForgotPasswordRepository( + gh<_i7.FirebaseAuth>(), + gh(), + )); + gh.lazySingleton<_i14.IGoogleRepositoryFacade>( + () => _i15.GoogleAuthenticationRepository( gh<_i9.GoogleSignIn>(), gh<_i7.FirebaseAuth>(), )); - gh.lazySingleton<_i14.NTP>(() => coreInjectableModule.ntp); - await gh.factoryAsync<_i15.SharedPreferences>( + gh.lazySingleton<_i16.NTP>(() => coreInjectableModule.ntp); + await gh.factoryAsync<_i17.SharedPreferences>( () => firebaseAuthInjectableModule.sharePreferences, preResolve: true, ); - gh.singleton<_i16.UserRepository>( + gh.singleton<_i18.UserRepository>( authenticationMockModuleInjection.userRepository); - gh.factory<_i17.AuthenticationBloc>(() => _i17.AuthenticationBloc( + gh.factory<_i19.AuthenticationBloc>(() => _i19.AuthenticationBloc( authenticationRepository: gh<_i3.AuthenticationRepository>(), - userRepository: gh<_i16.UserRepository>(), + userRepository: gh<_i18.UserRepository>(), )); - gh.singleton<_i18.Cached>(_i18.Cached(gh<_i15.SharedPreferences>())); - gh.factory<_i19.FacebookAuthBloc>(() => _i19.FacebookAuthBloc( + gh.singleton<_i20.Cached>(_i20.Cached(gh<_i17.SharedPreferences>())); + gh.factory<_i21.FacebookAuthBloc>(() => _i21.FacebookAuthBloc( authenticationRepository: gh<_i10.IFacebookRepositoryFacade>())); - gh.factory<_i20.GoogleSignInBloc>(() => _i20.GoogleSignInBloc( - authenticationRepository: gh<_i12.IGoogleRepositoryFacade>())); - gh.lazySingleton<_i21.IAuthFacade>(() => _i22.FirebaseAuthFacade( + gh.factory<_i22.ForgotPasswordBloc>(() => _i22.ForgotPasswordBloc( + gh<_i22.ForgotPasswordState>(), + forgotPasswordRepositoryFacade: + gh<_i12.IForgotPasswordRepositoryFacade>(), + )); + gh.factory<_i23.GoogleSignInBloc>(() => _i23.GoogleSignInBloc( + authenticationRepository: gh<_i14.IGoogleRepositoryFacade>())); + gh.lazySingleton<_i24.IAuthFacade>(() => _i25.FirebaseAuthFacade( gh<_i7.FirebaseAuth>(), - gh<_i18.Cached>(), + gh<_i20.Cached>(), )); - gh.lazySingleton<_i23.AppSettingsHelper>(() => _i23.AppSettingsHelper( - gh<_i18.Cached>(), + gh.lazySingleton<_i26.AppSettingsHelper>(() => _i26.AppSettingsHelper( + gh<_i20.Cached>(), gh<_i4.Connectivity>(), )); - gh.factory<_i24.AuthBloc>(() => _i24.AuthBloc(gh<_i21.IAuthFacade>())); - gh.singleton<_i25.EmailPasswordBloc>(_i25.EmailPasswordBloc( - authenticationRepository: gh<_i21.IAuthFacade>())); - gh.factory<_i26.HomeViewBloc>( - () => _i26.HomeViewBloc(gh<_i23.AppSettingsHelper>())); - gh.factory<_i27.InternetAndTimeBloc>( - () => _i27.InternetAndTimeBloc(gh<_i23.AppSettingsHelper>())); + gh.factory<_i27.AuthBloc>(() => _i27.AuthBloc(gh<_i24.IAuthFacade>())); + gh.singleton<_i28.EmailPasswordBloc>(_i28.EmailPasswordBloc( + authenticationRepository: gh<_i24.IAuthFacade>())); + gh.factory<_i29.HomeViewBloc>( + () => _i29.HomeViewBloc(gh<_i26.AppSettingsHelper>())); + gh.factory<_i30.InternetAndTimeBloc>( + () => _i30.InternetAndTimeBloc(gh<_i26.AppSettingsHelper>())); return this; } } class _$GoogleAuthenticationInjectableModule - extends _i28.GoogleAuthenticationInjectableModule {} + extends _i31.GoogleAuthenticationInjectableModule {} -class _$CoreInjectableModule extends _i29.CoreInjectableModule {} +class _$CoreInjectableModule extends _i32.CoreInjectableModule {} class _$AuthenticationMockModuleInjection - extends _i30.AuthenticationMockModuleInjection {} + extends _i33.AuthenticationMockModuleInjection {} class _$FirebaseAuthInjectableModule - extends _i31.FirebaseAuthInjectableModule {} + extends _i34.FirebaseAuthInjectableModule {} class _$FacebookAuthenticationInjectableModule - extends _i32.FacebookAuthenticationInjectableModule {} + extends _i35.FacebookAuthenticationInjectableModule {} diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 9779ed5..1ec51e7 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -248,11 +248,11 @@ "@termsOfUseSubmitBtn": { "description": "This is the text displayed on the submit button of the terms of use screen" }, - "confirmPhoneNumberTitleText": "Enter Pin\nCode", + "confirmPhoneNumberTitleText": "Enter OTP\nCode", "@confirmPhoneNumberTitleText": { "description": "This is the main title on the phone number confirmation screen" }, - "confirmPhoneNumberBodyContentStart": "We’ve sent you a confirmation email containing ", + "confirmPhoneNumberBodyContentStart": "We’ve sent you a confirmation sms containing your ", "@confirmPhoneNumberBodyContentStart": { "description": "This is the first part of the content found on the body of the confirmation screen, just below the main title" }, @@ -260,7 +260,7 @@ "@confirmPhoneNumberBodyContentMid": { "description": "This is the middle part in bold of the content found on the body of the confirmation screen" }, - "confirmPhoneNumberBodyContentEnd": "Please enter the code.", + "confirmPhoneNumberBodyContentEnd": "Please enter the code here.", "@confirmPhoneNumberBodyContentEnd": { "description": "This is the last part of the content found on the body of the confirmation screen" }, @@ -268,22 +268,33 @@ "@confirmPhoneNumberResendOtpButton": { "description": "This is the text label on the resend button on the confirmation screen" }, + "saveMoneyWithBucketScreenTitle": "Add to your savings", + "@saveMoneyWithBucketScreenTitle": { + "description": "This is the main title on the save money with bucket screen screen" + }, + "saveMoneyWithBucketSaveButton": "Save", + "@saveMoneyWithBucketSaveButton": { + "description": "This is the text label on the resend button on the phone number confirmation screen" + }, "confirmPhoneNumberNeedHelpLink": "Need help?", "@confirmPhoneNumberNeedHelpLink": { - "description": "This is the text label for the Need help link in the dark section of the confirmation screen " + "description": "This is the text label for the Need help link in the dark section of the phone number confirmation screen " }, "confirmPhoneNumberContactUs": " Contact us", "@confirmPhoneNumberContactUs": { - "description": "This is the text label for the contact us link in the dark section of the confirmation screen" + "description": "This is the text label for the contact us link in the dark section of the phone number confirmation screen" }, - "saveMoneyWithBucketScreenTitle": "Add to your savings", - "@saveMoneyWithBucketScreenTitle": { - "description": "This is the main title on the save money with bucket screen screen" + "confirmEmailTitleText": "Confirm your\nEmail", + "@confirmEmailTitleText": { + "description": "This is the main title on the email confirmation screen" }, - "saveMoneyWithBucketSaveButton": "Save", - "@saveMoneyWithBucketSaveButton": { - "description": "This is the button label of the save button on the save money with bucket screen screen" + "confirmEmailBodyContentStart": "We’ve sent you a confirmation email containing your ", + "@confirmEmailBodyContentStart": { + "description": "This is the first part of the content found on the body of the email confirmation screen, just below the main title" + }, + "confirmEmailResendButton": "Resend confirmation email", + "@confirmEmailResendButton": { + "description": "This is the text label on the resend button on the phone number confirmation screen" } - } \ No newline at end of file diff --git a/lib/l10n/arb/app_fr.arb b/lib/l10n/arb/app_fr.arb index 07beaa5..8359a06 100644 --- a/lib/l10n/arb/app_fr.arb +++ b/lib/l10n/arb/app_fr.arb @@ -252,7 +252,7 @@ "@confirmPhoneNumberTitleText": { "description": "Il s'agit du titre principal de l'écran de confirmation du numéro de téléphone." }, - "confirmPhoneNumberBodyContentStart": "Nous vous avons envoyé un e-mail de confirmation contenant ", + "confirmPhoneNumberBodyContentStart": "Nous vous avons envoyé un sms de confirmation contenant votre ", "@confirmPhoneNumberBodyContentStart": { "description": "Il s'agit de la première partie du contenu qui se trouve dans le corps de l'écran de confirmation, juste en dessous du titre principal." }, @@ -260,7 +260,7 @@ "@confirmPhoneNumberBodyContentMid": { "description": "Il s'agit de la partie centrale en gras du contenu du corps de l'écran de confirmation." }, - "confirmPhoneNumberBodyContentEnd": "Veuillez saisir le code.", + "confirmPhoneNumberBodyContentEnd": "Veuillez saisir le code ici.", "@confirmPhoneNumberBodyContentEnd": { "description": "Il s'agit de la dernière partie du contenu figurant dans le corps de l'écran de confirmation." }, @@ -283,6 +283,18 @@ "saveMoneyWithBucketSaveButton": "Sauvegarder", "@saveMoneyWithBucketSaveButton": { "description": "Il s'agit de l'intitulé du bouton \"économiser\" de l'écran \"sauvegarder de l'argent avec un seau\"." + }, + "confirmEmailTitleText": "Confirmez votre\nAdresse Email", + "@confirmEmailTitleText": { + "description": "Il s'agit du titre principal de l'écran de confirmation du courrier électronique." + }, + "confirmEmailBodyContentStart": "Nous vous avons envoyé un e-mail de confirmation contenant votre ", + "@confirmEmailBodyContentStart": { + "description": "Il s'agit de la première partie du contenu qui se trouve dans le corps de l'écran de confirmation du courrier électronique, juste en dessous du titre principal." + }, + "confirmEmailResendButton": "Renvoyer l'e-mail", + "@confirmEmailResendButton": { + "description": "Il s'agit du texte de l'étiquette du bouton de renvoi sur l'écran de confirmation du numéro de téléphone." } } \ No newline at end of file diff --git a/lib/onboarding/view/widgets/actions.dart b/lib/onboarding/view/widgets/actions.dart index da29038..428d76e 100644 --- a/lib/onboarding/view/widgets/actions.dart +++ b/lib/onboarding/view/widgets/actions.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:fpb/assets/fpb_icons/fpb_icons_icons.dart'; -import 'package:fpb/core/presentation/widget/my_button.dart'; +import 'package:fpb/core/presentation/widget/fpb_button.dart'; import 'package:fpb/l10n/l10n.dart'; class Actions extends StatelessWidget { diff --git a/lib/phone_number_confirmation/view/phone_number_confirmation.dart b/lib/phone_number_confirmation/view/phone_number_confirmation.dart new file mode 100644 index 0000000..50309e8 --- /dev/null +++ b/lib/phone_number_confirmation/view/phone_number_confirmation.dart @@ -0,0 +1,102 @@ +import 'package:flutter/material.dart'; +import 'package:fpb/core/presentation/widget/confirmation_screen_illustration.dart'; +import 'package:fpb/core/presentation/widget/otp_group_text_field.dart'; +import 'package:fpb/l10n/l10n.dart'; +import 'package:fpb/core/presentation/widget/confirmation_screen_actions.dart'; +import 'package:fpb/core/presentation/widget/otp_input.dart'; + +class PhoneNumberConfirmationScreen extends StatefulWidget { + static const routeName = '/phoneNumberConfirmation'; + + const PhoneNumberConfirmationScreen({super.key}); + + @override + State createState() => + _PhoneNumberConfirmationScreenState(); +} + +class _PhoneNumberConfirmationScreenState + extends State { + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + final theme = Theme.of(context); + final style = theme.textTheme; + final colors = theme.colorScheme; + + return LayoutBuilder( + builder: (context, box) { + return Scaffold( + resizeToAvoidBottomInset: false, + backgroundColor: colors.background, + body: Stack( + children: [ + SingleChildScrollView( + child: Padding( + padding: EdgeInsets.only( + left: box.maxHeight * .025, + right: box.maxHeight * .025), + child: Column( + children: [ + SizedBox( + height: box.maxHeight * .15, + ), + Text( + l10n.confirmPhoneNumberTitleText, + style: style.titleLarge + ?.copyWith(fontSize: box.maxHeight * .045), + textAlign: TextAlign.center, + ), + SizedBox( + height: box.maxHeight * .03, + ), + RichText( + maxLines: 3, + textAlign: TextAlign.center, + text: TextSpan(children: [ + TextSpan( + text: l10n.confirmPhoneNumberBodyContentStart, + style: style.titleMedium, + ), + TextSpan( + text: l10n.confirmPhoneNumberBodyContentMid, + style: style.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + //color: theme.colorScheme.onSurface + ), + ), + TextSpan( + text: l10n.confirmPhoneNumberBodyContentEnd, + style: style.titleMedium) + ])), + SizedBox( + height: box.maxHeight * .05, + ), + OtpGroupTextField( + box: box, + ), + SizedBox( + height: box.maxHeight * .05, + ), + ConfirmationScreenIllustration( + box: box, + ), + ], + ), + ), + ), + Align( + alignment: Alignment.bottomCenter, + child: ConfirmationScreenAction( + onTapConfirmButton: () {}, + confirmButtonLabel: l10n.confirmPhoneNumberResendOtpButton, + onTapContactUsButton: () {}, + ), + ) + ], + ), + ); + }, + ); + } +} diff --git a/lib/router/app_route.dart b/lib/router/app_route.dart index 3daf64d..7f7ba41 100644 --- a/lib/router/app_route.dart +++ b/lib/router/app_route.dart @@ -1,8 +1,10 @@ import 'package:auto_route/annotations.dart'; +import 'package:fpb/email_confirmation/email_confirmation.dart'; import 'package:fpb/home/view/home_screen.dart'; import 'package:fpb/latest_activities/view/latest_activities_screen.dart'; import 'package:fpb/onboarding/view/onboarding_screens.dart'; import 'package:fpb/onboarding/view/splash_screen.dart'; +import 'package:fpb/phone_number_confirmation/view/phone_number_confirmation.dart'; import 'package:fpb/profile/view/profile_page.dart'; import 'package:fpb/qr_code_screen/view/qr_code_screen.dart'; import 'package:fpb/savings/save_money_with_bucket/save_money_with_bucket.dart'; @@ -14,6 +16,8 @@ import 'package:fpb/sign_up/view/signup_page.dart'; routes: [ AutoRoute(page: SplashScreen, initial: true), AutoRoute(page: SignInScreen), + AutoRoute(page: PhoneNumberConfirmationScreen), + AutoRoute(page: EmailConfirmationScreen), AutoRoute(page: SignUpScreen), AutoRoute(page: SaveMoneyScreen), AutoRoute( diff --git a/lib/router/app_route.gr.dart b/lib/router/app_route.gr.dart index 5d5e9e9..9d58a39 100644 --- a/lib/router/app_route.gr.dart +++ b/lib/router/app_route.gr.dart @@ -11,129 +11,152 @@ // ignore_for_file: type=lint // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'package:auto_route/auto_route.dart' as _i10; -import 'package:flutter/material.dart' as _i11; - -import '../core/domain/user.dart' as _i12; -import '../home/view/home_screen.dart' as _i5; -import '../latest_activities/view/latest_activities_screen.dart' as _i6; -import '../onboarding/view/onboarding_screens.dart' as _i8; +import 'package:auto_route/auto_route.dart' as _i12; +import 'package:flutter/material.dart' as _i13; + +import '../core/domain/user.dart' as _i14; +import '../email_confirmation/email_confirmation.dart' as _i4; +import '../home/view/home_screen.dart' as _i7; +import '../latest_activities/view/latest_activities_screen.dart' as _i8; +import '../onboarding/view/onboarding_screens.dart' as _i10; import '../onboarding/view/splash_screen.dart' as _i1; -import '../profile/view/profile_page.dart' as _i9; -import '../qr_code_screen/view/qr_code_screen.dart' as _i7; -import '../savings/save_money_with_bucket/save_money_with_bucket.dart' as _i4; +import '../phone_number_confirmation/view/phone_number_confirmation.dart' + as _i3; +import '../profile/view/profile_page.dart' as _i11; +import '../qr_code_screen/view/qr_code_screen.dart' as _i9; +import '../savings/save_money_with_bucket/save_money_with_bucket.dart' as _i6; import '../sign_in/view/sign_in_page.dart' as _i2; -import '../sign_up/view/signup_page.dart' as _i3; +import '../sign_up/view/signup_page.dart' as _i5; -class AppRoute extends _i10.RootStackRouter { - AppRoute([_i11.GlobalKey<_i11.NavigatorState>? navigatorKey]) +class AppRoute extends _i12.RootStackRouter { + AppRoute([_i13.GlobalKey<_i13.NavigatorState>? navigatorKey]) : super(navigatorKey); @override - final Map pagesMap = { + final Map pagesMap = { SplashRoute.name: (routeData) { - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, child: const _i1.SplashScreen(), ); }, SignInRoute.name: (routeData) { - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, child: const _i2.SignInScreen(), ); }, + PhoneNumberConfirmationRoute.name: (routeData) { + return _i12.MaterialPageX( + routeData: routeData, + child: const _i3.PhoneNumberConfirmationScreen(), + ); + }, + EmailConfirmationRoute.name: (routeData) { + return _i12.MaterialPageX( + routeData: routeData, + child: const _i4.EmailConfirmationScreen(), + ); + }, SignUpRoute.name: (routeData) { - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, - child: const _i3.SignUpScreen(), + child: const _i5.SignUpScreen(), ); }, SaveMoneyRoute.name: (routeData) { - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, - child: const _i4.SaveMoneyScreen(), + child: const _i6.SaveMoneyScreen(), ); }, HomeRouter.name: (routeData) { final args = routeData.argsAs(); - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, - child: _i5.HomeScreen( + child: _i7.HomeScreen( key: args.key, user: args.user, ), ); }, LatestActivitiesPage.name: (routeData) { - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, - child: const _i6.LatestActivitiesPage(), + child: const _i8.LatestActivitiesPage(), ); }, QrCodeRoute.name: (routeData) { - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, - child: const _i7.QrCodeScreen(), + child: const _i9.QrCodeScreen(), ); }, OnboardingRoute.name: (routeData) { final args = routeData.argsAs( orElse: () => const OnboardingRouteArgs()); - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, - child: _i8.OnboardingScreen( + child: _i10.OnboardingScreen( onGetStartedPressed: args.onGetStartedPressed, key: args.key, ), ); }, ProfileRoute.name: (routeData) { - return _i10.MaterialPageX( + return _i12.MaterialPageX( routeData: routeData, - child: const _i9.ProfileScreen(), + child: const _i11.ProfileScreen(), ); }, }; @override - List<_i10.RouteConfig> get routes => [ - _i10.RouteConfig( + List<_i12.RouteConfig> get routes => [ + _i12.RouteConfig( SplashRoute.name, path: '/', ), - _i10.RouteConfig( + _i12.RouteConfig( SignInRoute.name, path: '/sign-in-screen', ), - _i10.RouteConfig( + _i12.RouteConfig( + PhoneNumberConfirmationRoute.name, + path: '/phone-number-confirmation-screen', + ), + _i12.RouteConfig( + EmailConfirmationRoute.name, + path: '/email-confirmation-screen', + ), + _i12.RouteConfig( SignUpRoute.name, path: '/sign-up-screen', ), - _i10.RouteConfig( + _i12.RouteConfig( SaveMoneyRoute.name, path: '/save-money-screen', ), - _i10.RouteConfig( + _i12.RouteConfig( HomeRouter.name, path: '/home-screen', children: [ - _i10.RouteConfig( + _i12.RouteConfig( ProfileRoute.name, path: 'profile', parent: HomeRouter.name, ) ], ), - _i10.RouteConfig( + _i12.RouteConfig( LatestActivitiesPage.name, path: 'latestActivities', ), - _i10.RouteConfig( + _i12.RouteConfig( QrCodeRoute.name, path: '/qr-code-screen', ), - _i10.RouteConfig( + _i12.RouteConfig( OnboardingRoute.name, path: '/onboarding-screen', ), @@ -142,7 +165,7 @@ class AppRoute extends _i10.RootStackRouter { /// generated route for /// [_i1.SplashScreen] -class SplashRoute extends _i10.PageRouteInfo { +class SplashRoute extends _i12.PageRouteInfo { const SplashRoute() : super( SplashRoute.name, @@ -154,7 +177,7 @@ class SplashRoute extends _i10.PageRouteInfo { /// generated route for /// [_i2.SignInScreen] -class SignInRoute extends _i10.PageRouteInfo { +class SignInRoute extends _i12.PageRouteInfo { const SignInRoute() : super( SignInRoute.name, @@ -165,8 +188,32 @@ class SignInRoute extends _i10.PageRouteInfo { } /// generated route for -/// [_i3.SignUpScreen] -class SignUpRoute extends _i10.PageRouteInfo { +/// [_i3.PhoneNumberConfirmationScreen] +class PhoneNumberConfirmationRoute extends _i12.PageRouteInfo { + const PhoneNumberConfirmationRoute() + : super( + PhoneNumberConfirmationRoute.name, + path: '/phone-number-confirmation-screen', + ); + + static const String name = 'PhoneNumberConfirmationRoute'; +} + +/// generated route for +/// [_i4.EmailConfirmationScreen] +class EmailConfirmationRoute extends _i12.PageRouteInfo { + const EmailConfirmationRoute() + : super( + EmailConfirmationRoute.name, + path: '/email-confirmation-screen', + ); + + static const String name = 'EmailConfirmationRoute'; +} + +/// generated route for +/// [_i5.SignUpScreen] +class SignUpRoute extends _i12.PageRouteInfo { const SignUpRoute() : super( SignUpRoute.name, @@ -177,8 +224,8 @@ class SignUpRoute extends _i10.PageRouteInfo { } /// generated route for -/// [_i4.SaveMoneyScreen] -class SaveMoneyRoute extends _i10.PageRouteInfo { +/// [_i6.SaveMoneyScreen] +class SaveMoneyRoute extends _i12.PageRouteInfo { const SaveMoneyRoute() : super( SaveMoneyRoute.name, @@ -189,12 +236,12 @@ class SaveMoneyRoute extends _i10.PageRouteInfo { } /// generated route for -/// [_i5.HomeScreen] -class HomeRouter extends _i10.PageRouteInfo { +/// [_i7.HomeScreen] +class HomeRouter extends _i12.PageRouteInfo { HomeRouter({ - _i11.Key? key, - required _i12.User user, - List<_i10.PageRouteInfo>? children, + _i13.Key? key, + required _i14.User user, + List<_i12.PageRouteInfo>? children, }) : super( HomeRouter.name, path: '/home-screen', @@ -214,9 +261,9 @@ class HomeRouterArgs { required this.user, }); - final _i11.Key? key; + final _i13.Key? key; - final _i12.User user; + final _i14.User user; @override String toString() { @@ -225,8 +272,8 @@ class HomeRouterArgs { } /// generated route for -/// [_i6.LatestActivitiesPage] -class LatestActivitiesPage extends _i10.PageRouteInfo { +/// [_i8.LatestActivitiesPage] +class LatestActivitiesPage extends _i12.PageRouteInfo { const LatestActivitiesPage() : super( LatestActivitiesPage.name, @@ -237,8 +284,8 @@ class LatestActivitiesPage extends _i10.PageRouteInfo { } /// generated route for -/// [_i7.QrCodeScreen] -class QrCodeRoute extends _i10.PageRouteInfo { +/// [_i9.QrCodeScreen] +class QrCodeRoute extends _i12.PageRouteInfo { const QrCodeRoute() : super( QrCodeRoute.name, @@ -249,11 +296,11 @@ class QrCodeRoute extends _i10.PageRouteInfo { } /// generated route for -/// [_i8.OnboardingScreen] -class OnboardingRoute extends _i10.PageRouteInfo { +/// [_i10.OnboardingScreen] +class OnboardingRoute extends _i12.PageRouteInfo { OnboardingRoute({ void Function()? onGetStartedPressed, - _i11.Key? key, + _i13.Key? key, }) : super( OnboardingRoute.name, path: '/onboarding-screen', @@ -274,7 +321,7 @@ class OnboardingRouteArgs { final void Function()? onGetStartedPressed; - final _i11.Key? key; + final _i13.Key? key; @override String toString() { @@ -283,8 +330,8 @@ class OnboardingRouteArgs { } /// generated route for -/// [_i9.ProfileScreen] -class ProfileRoute extends _i10.PageRouteInfo { +/// [_i11.ProfileScreen] +class ProfileRoute extends _i12.PageRouteInfo { const ProfileRoute() : super( ProfileRoute.name, diff --git a/lib/savings/save_money_with_bucket/save_money_with_bucket.dart b/lib/savings/save_money_with_bucket/save_money_with_bucket.dart index a717cb9..7d5ec01 100644 --- a/lib/savings/save_money_with_bucket/save_money_with_bucket.dart +++ b/lib/savings/save_money_with_bucket/save_money_with_bucket.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:fpb/core/presentation/widget/my_button.dart'; +import 'package:fpb/core/presentation/widget/fpb_button.dart'; import 'package:fpb/core/shared/helpers/extensions.dart'; import 'package:fpb/l10n/l10n.dart'; import 'package:fpb/savings/save_money_with_bucket/widgets/bucket_account_dropdown_button.dart'; diff --git a/lib/sign_in/view/widgets/email_input.dart b/lib/sign_in/view/widgets/email_input.dart index be954a0..9f9059e 100644 --- a/lib/sign_in/view/widgets/email_input.dart +++ b/lib/sign_in/view/widgets/email_input.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fpb/core/application/email_password_bloc/email_password_bloc.dart'; -import 'package:fpb/core/presentation/widget/my_textformfield.dart'; +import 'package:fpb/core/presentation/widget/fpb_text_form_field.dart'; import 'package:fpb/l10n/l10n.dart'; class EmailInput extends StatelessWidget { diff --git a/lib/sign_in/view/widgets/login_button.dart b/lib/sign_in/view/widgets/login_button.dart index 9b0ed97..6827f61 100644 --- a/lib/sign_in/view/widgets/login_button.dart +++ b/lib/sign_in/view/widgets/login_button.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:formz/formz.dart'; import 'package:fpb/core/application/email_password_bloc/email_password_bloc.dart'; -import 'package:fpb/core/presentation/widget/my_button.dart'; +import 'package:fpb/core/presentation/widget/fpb_button.dart'; import 'package:fpb/l10n/l10n.dart'; class LoginButton extends StatelessWidget { diff --git a/lib/sign_in/view/widgets/password_input.dart b/lib/sign_in/view/widgets/password_input.dart index 3146dba..9f8391c 100644 --- a/lib/sign_in/view/widgets/password_input.dart +++ b/lib/sign_in/view/widgets/password_input.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fpb/core/application/email_password_bloc/email_password_bloc.dart'; -import 'package:fpb/core/presentation/widget/my_textformfield.dart'; +import 'package:fpb/core/presentation/widget/fpb_text_form_field.dart'; import 'package:fpb/l10n/l10n.dart'; class PasswordInput extends StatelessWidget { diff --git a/lib/sign_up/view/signup_page.dart b/lib/sign_up/view/signup_page.dart index 8d6b814..1c79d00 100644 --- a/lib/sign_up/view/signup_page.dart +++ b/lib/sign_up/view/signup_page.dart @@ -7,8 +7,8 @@ import 'package:fpb/authentication_with_facebook/application/facebook_auth_bloc. import 'package:fpb/authentication_with_google/application/google_auth_bloc/google_sign_in_bloc.dart'; import 'package:fpb/authentication_with_google/view/loading_indicator.dart'; import 'package:fpb/core/application/email_password_bloc/email_password_bloc.dart'; -import 'package:fpb/core/presentation/widget/my_button.dart'; -import 'package:fpb/core/presentation/widget/my_textformfield.dart'; +import 'package:fpb/core/presentation/widget/fpb_button.dart'; +import 'package:fpb/core/presentation/widget/fpb_text_form_field.dart'; import 'package:fpb/injection.dart'; import 'package:fpb/l10n/l10n.dart'; import 'package:fpb/onboarding/view/widgets/alternative_auth.dart';