diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/oidc4vc_settings.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/oidc4vc_settings.dart index a7f1a75c1..13e14e1c7 100644 --- a/lib/dashboard/drawer/ssi/oidc4vc_settngs/oidc4vc_settings.dart +++ b/lib/dashboard/drawer/ssi/oidc4vc_settngs/oidc4vc_settings.dart @@ -1,3 +1,2 @@ -export 'security_level/security_level.dart'; -export 'six_or_four_pin/six_or_four_pin.dart'; -export 'src/src.dart'; +export 'view/oidc4vc_settings_menu.dart'; +export 'widget/widget.dart'; diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/security_level/security_level.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/security_level/security_level.dart deleted file mode 100644 index 375b2b8e9..000000000 --- a/lib/dashboard/drawer/ssi/oidc4vc_settngs/security_level/security_level.dart +++ /dev/null @@ -1 +0,0 @@ -export 'view/security_level_page.dart'; diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/security_level/view/security_level_page.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/security_level/view/security_level_page.dart deleted file mode 100644 index 9b1ce0607..000000000 --- a/lib/dashboard/drawer/ssi/oidc4vc_settngs/security_level/view/security_level_page.dart +++ /dev/null @@ -1,147 +0,0 @@ -import 'package:altme/app/app.dart'; -import 'package:altme/dashboard/profile/profile.dart'; -import 'package:altme/l10n/l10n.dart'; -import 'package:altme/theme/theme.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; - -class SecurityLevelPage extends StatelessWidget { - const SecurityLevelPage({super.key}); - - static Route route() { - return MaterialPageRoute( - builder: (_) => const SecurityLevelPage(), - settings: const RouteSettings(name: '/SecurityLevelPage'), - ); - } - - @override - Widget build(BuildContext context) { - final l10n = context.l10n; - return BasePage( - title: l10n.security_level, - useSafeArea: true, - scrollView: false, - titleAlignment: Alignment.topCenter, - padding: const EdgeInsets.symmetric(horizontal: Sizes.spaceSmall), - titleLeading: const BackLeadingButton(), - body: BlocBuilder( - builder: (context, state) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: MainAxisSize.max, - children: [ - Container( - padding: const EdgeInsets.all(Sizes.spaceSmall), - margin: const EdgeInsets.all(Sizes.spaceXSmall), - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.cardHighlighted, - borderRadius: const BorderRadius.all( - Radius.circular(Sizes.largeRadius), - ), - ), - child: Column( - children: [ - const SizedBox(height: 10), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - l10n.security_level_title, - style: Theme.of(context) - .textTheme - .titleMedium - ?.copyWith( - color: - Theme.of(context).colorScheme.onPrimary, - ), - ), - const SizedBox(height: 10), - Text( - l10n.security_level_subTitle, - style: Theme.of(context) - .textTheme - .bodyMedium - ?.copyWith( - color: - Theme.of(context).colorScheme.onPrimary, - ), - ), - ], - ), - ), - const SizedBox(height: 10), - ListTile( - onTap: () { - context - .read() - .setSecurityLevel(isSecurityLow: true); - }, - shape: const RoundedRectangleBorder( - side: BorderSide( - color: Color(0xFFDDDDEE), - width: 0.5, - ), - ), - title: Text( - l10n.lowSecurity, - style: Theme.of(context).textTheme.bodyLarge?.copyWith( - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - trailing: Icon( - state.model.isSecurityLow - ? Icons.radio_button_checked - : Icons.radio_button_unchecked, - size: Sizes.icon2x, - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: Sizes.spaceSmall, - vertical: Sizes.spaceXSmall, - ), - child: Divider( - height: 0, - color: Theme.of(context).colorScheme.borderColor, - ), - ), - ListTile( - onTap: () { - context - .read() - .setSecurityLevel(isSecurityLow: false); - }, - shape: const RoundedRectangleBorder( - side: BorderSide( - color: Color(0xFFDDDDEE), - width: 0.5, - ), - ), - title: Text( - l10n.highSecurity, - style: Theme.of(context).textTheme.bodyLarge?.copyWith( - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - trailing: Icon( - !state.model.isSecurityLow - ? Icons.radio_button_checked - : Icons.radio_button_unchecked, - size: Sizes.icon2x, - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - ], - ), - ), - ], - ); - }, - ), - ); - } -} diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/six_or_four_pin/six_or_four_pin.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/six_or_four_pin/six_or_four_pin.dart deleted file mode 100644 index 2322ced81..000000000 --- a/lib/dashboard/drawer/ssi/oidc4vc_settngs/six_or_four_pin/six_or_four_pin.dart +++ /dev/null @@ -1 +0,0 @@ -export 'view/six_or_four_pin_page.dart'; diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/six_or_four_pin/view/six_or_four_pin_page.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/six_or_four_pin/view/six_or_four_pin_page.dart deleted file mode 100644 index 65bf82077..000000000 --- a/lib/dashboard/drawer/ssi/oidc4vc_settngs/six_or_four_pin/view/six_or_four_pin_page.dart +++ /dev/null @@ -1,131 +0,0 @@ -import 'package:altme/app/app.dart'; -import 'package:altme/dashboard/profile/profile.dart'; -import 'package:altme/l10n/l10n.dart'; -import 'package:altme/theme/theme.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; - -class SixOrForUserPinPage extends StatelessWidget { - const SixOrForUserPinPage({super.key}); - - static Route route() { - return MaterialPageRoute( - builder: (_) => const SixOrForUserPinPage(), - settings: const RouteSettings(name: '/SixOrForUserPinPage'), - ); - } - - @override - Widget build(BuildContext context) { - final l10n = context.l10n; - return BasePage( - title: l10n.six_or_four_digits_user_pin, - useSafeArea: true, - scrollView: false, - titleAlignment: Alignment.topCenter, - padding: const EdgeInsets.symmetric(horizontal: Sizes.spaceSmall), - titleLeading: const BackLeadingButton(), - body: BlocBuilder( - builder: (context, state) { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: MainAxisSize.max, - children: [ - Container( - padding: const EdgeInsets.all(Sizes.spaceSmall), - margin: const EdgeInsets.all(Sizes.spaceXSmall), - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.cardHighlighted, - borderRadius: const BorderRadius.all( - Radius.circular(Sizes.largeRadius), - ), - ), - child: Column( - children: [ - const SizedBox(height: 10), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Column( - children: [ - Text( - l10n.six_or_four_digits_user_pin_title, - style: Theme.of(context).textTheme.drawerItemTitle, - ), - const SizedBox(height: 10), - Text( - l10n.six_or_four_digits_user_pin_subTitle, - style: - Theme.of(context).textTheme.drawerItemSubtitle, - ), - ], - ), - ), - const SizedBox(height: 10), - ListTile( - onTap: () { - context.read().setUserPinDigitLength(4); - }, - shape: const RoundedRectangleBorder( - side: BorderSide( - color: Color(0xFFDDDDEE), - width: 0.5, - ), - ), - title: Text( - l10n.four_digits_user_pin, - style: Theme.of(context).textTheme.bodyLarge?.copyWith( - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - trailing: Icon( - state.model.userPinDigitsLength == 4 - ? Icons.radio_button_checked - : Icons.radio_button_unchecked, - size: Sizes.icon2x, - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: Sizes.spaceSmall, - vertical: Sizes.spaceXSmall, - ), - child: Divider( - height: 0, - color: Theme.of(context).colorScheme.borderColor, - ), - ), - ListTile( - onTap: () { - context.read().setUserPinDigitLength(6); - }, - shape: const RoundedRectangleBorder( - side: BorderSide( - color: Color(0xFFDDDDEE), - width: 0.5, - ), - ), - title: Text( - l10n.six_digits_user_pin, - style: Theme.of(context).textTheme.bodyLarge?.copyWith( - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - trailing: Icon( - state.model.userPinDigitsLength == 6 - ? Icons.radio_button_checked - : Icons.radio_button_unchecked, - size: Sizes.icon2x, - color: Theme.of(context).colorScheme.onPrimary, - ), - ), - ], - ), - ), - ], - ); - }, - ), - ); - } -} diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/src/src.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/src/src.dart deleted file mode 100644 index 5b3b1808e..000000000 --- a/lib/dashboard/drawer/ssi/oidc4vc_settngs/src/src.dart +++ /dev/null @@ -1 +0,0 @@ -export 'view/oidc4vc_settings_menu.dart'; diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/src/view/oidc4vc_settings_menu.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/src/view/oidc4vc_settings_menu.dart deleted file mode 100644 index d17d621e7..000000000 --- a/lib/dashboard/drawer/ssi/oidc4vc_settngs/src/view/oidc4vc_settings_menu.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:altme/app/app.dart'; -import 'package:altme/dashboard/dashboard.dart'; -import 'package:altme/l10n/l10n.dart'; -import 'package:altme/theme/theme.dart'; -import 'package:flutter/material.dart'; - -class Oidc4vcSettingMenu extends StatelessWidget { - const Oidc4vcSettingMenu({super.key}); - - static Route route() { - return MaterialPageRoute( - settings: const RouteSettings(name: '/Oidc4vcSettingMenu'), - builder: (_) => const Oidc4vcSettingMenu(), - ); - } - - @override - Widget build(BuildContext context) { - return const Oidc4vcSettingMenuView(); - } -} - -class Oidc4vcSettingMenuView extends StatelessWidget { - const Oidc4vcSettingMenuView({super.key}); - - @override - Widget build(BuildContext context) { - final l10n = context.l10n; - return Drawer( - backgroundColor: Theme.of(context).colorScheme.drawerBackground, - child: SafeArea( - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 15), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - BackLeadingButton( - padding: EdgeInsets.zero, - color: Theme.of(context).colorScheme.onPrimary, - ), - const Center( - child: AltMeLogo(size: 90), - ), - const SizedBox( - height: Sizes.spaceSmall, - ), - DrawerItem( - title: l10n.security_level, - onTap: () { - Navigator.of(context).push(SecurityLevelPage.route()); - }, - ), - DrawerItem( - title: l10n.six_or_four_digits_user_pin, - onTap: () { - Navigator.of(context) - .push(SixOrForUserPinPage.route()); - }, - ), - ], - ), - ), - ), - ), - ); - } -} diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/view/oidc4vc_settings_menu.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/view/oidc4vc_settings_menu.dart new file mode 100644 index 000000000..cb16093d4 --- /dev/null +++ b/lib/dashboard/drawer/ssi/oidc4vc_settngs/view/oidc4vc_settings_menu.dart @@ -0,0 +1,44 @@ +import 'package:altme/app/app.dart'; +import 'package:altme/dashboard/dashboard.dart'; +import 'package:altme/l10n/l10n.dart'; +import 'package:flutter/material.dart'; + +class Oidc4vcSettingMenu extends StatelessWidget { + const Oidc4vcSettingMenu({super.key}); + + static Route route() { + return MaterialPageRoute( + settings: const RouteSettings(name: '/Oidc4vcSettingMenu'), + builder: (_) => const Oidc4vcSettingMenu(), + ); + } + + @override + Widget build(BuildContext context) { + return const Oidc4vcSettingMenuView(); + } +} + +class Oidc4vcSettingMenuView extends StatelessWidget { + const Oidc4vcSettingMenuView({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + return BasePage( + title: l10n.oidc4vc_settings, + useSafeArea: true, + scrollView: false, + titleAlignment: Alignment.topCenter, + padding: const EdgeInsets.symmetric(horizontal: Sizes.spaceSmall), + titleLeading: const BackLeadingButton(), + body: const Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SecurityLevelWidget(), + SixOrForUserPinWidget(), + ], + ), + ); + } +} diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/security_level_widget.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/security_level_widget.dart new file mode 100644 index 000000000..498428905 --- /dev/null +++ b/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/security_level_widget.dart @@ -0,0 +1,130 @@ +import 'package:altme/app/app.dart'; +import 'package:altme/dashboard/profile/profile.dart'; +import 'package:altme/l10n/l10n.dart'; +import 'package:altme/theme/theme.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class SecurityLevelWidget extends StatelessWidget { + const SecurityLevelWidget({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + return BlocBuilder( + builder: (context, state) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + padding: const EdgeInsets.all(Sizes.spaceSmall), + margin: const EdgeInsets.all(Sizes.spaceXSmall), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.cardHighlighted, + borderRadius: const BorderRadius.all( + Radius.circular(Sizes.largeRadius), + ), + ), + child: Column( + children: [ + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + l10n.security_level_title, + style: Theme.of(context) + .textTheme + .titleMedium + ?.copyWith( + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + const SizedBox(height: 10), + Text( + l10n.security_level_subTitle, + style: Theme.of(context) + .textTheme + .bodyMedium + ?.copyWith( + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + ], + ), + ), + const SizedBox(height: 10), + ListTile( + onTap: () { + context + .read() + .setSecurityLevel(isSecurityLow: true); + }, + shape: const RoundedRectangleBorder( + side: BorderSide( + color: Color(0xFFDDDDEE), + width: 0.5, + ), + ), + title: Text( + l10n.lowSecurity, + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + trailing: Icon( + state.model.isSecurityLow + ? Icons.radio_button_checked + : Icons.radio_button_unchecked, + size: Sizes.icon2x, + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: Sizes.spaceSmall, + vertical: Sizes.spaceXSmall, + ), + child: Divider( + height: 0, + color: Theme.of(context).colorScheme.borderColor, + ), + ), + ListTile( + onTap: () { + context + .read() + .setSecurityLevel(isSecurityLow: false); + }, + shape: const RoundedRectangleBorder( + side: BorderSide( + color: Color(0xFFDDDDEE), + width: 0.5, + ), + ), + title: Text( + l10n.highSecurity, + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + trailing: Icon( + !state.model.isSecurityLow + ? Icons.radio_button_checked + : Icons.radio_button_unchecked, + size: Sizes.icon2x, + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + ], + ), + ), + ], + ); + }, + ); + } +} diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/six_or_four_pin_widget.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/six_or_four_pin_widget.dart new file mode 100644 index 000000000..5154fa69b --- /dev/null +++ b/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/six_or_four_pin_widget.dart @@ -0,0 +1,115 @@ +import 'package:altme/app/app.dart'; +import 'package:altme/dashboard/profile/profile.dart'; +import 'package:altme/l10n/l10n.dart'; +import 'package:altme/theme/theme.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class SixOrForUserPinWidget extends StatelessWidget { + const SixOrForUserPinWidget({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + return BlocBuilder( + builder: (context, state) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + padding: const EdgeInsets.all(Sizes.spaceSmall), + margin: const EdgeInsets.all(Sizes.spaceXSmall), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.cardHighlighted, + borderRadius: const BorderRadius.all( + Radius.circular(Sizes.largeRadius), + ), + ), + child: Column( + children: [ + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + children: [ + Text( + l10n.six_or_four_digits_user_pin_title, + style: Theme.of(context).textTheme.drawerItemTitle, + ), + const SizedBox(height: 10), + Text( + l10n.six_or_four_digits_user_pin_subTitle, + style: Theme.of(context).textTheme.drawerItemSubtitle, + ), + ], + ), + ), + const SizedBox(height: 10), + ListTile( + onTap: () { + context.read().setUserPinDigitLength(4); + }, + shape: const RoundedRectangleBorder( + side: BorderSide( + color: Color(0xFFDDDDEE), + width: 0.5, + ), + ), + title: Text( + l10n.four_digits_user_pin, + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + trailing: Icon( + state.model.userPinDigitsLength == 4 + ? Icons.radio_button_checked + : Icons.radio_button_unchecked, + size: Sizes.icon2x, + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: Sizes.spaceSmall, + vertical: Sizes.spaceXSmall, + ), + child: Divider( + height: 0, + color: Theme.of(context).colorScheme.borderColor, + ), + ), + ListTile( + onTap: () { + context.read().setUserPinDigitLength(6); + }, + shape: const RoundedRectangleBorder( + side: BorderSide( + color: Color(0xFFDDDDEE), + width: 0.5, + ), + ), + title: Text( + l10n.six_digits_user_pin, + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + trailing: Icon( + state.model.userPinDigitsLength == 6 + ? Icons.radio_button_checked + : Icons.radio_button_unchecked, + size: Sizes.icon2x, + color: Theme.of(context).colorScheme.onPrimary, + ), + ), + ], + ), + ), + ], + ); + }, + ); + } +} diff --git a/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/widget.dart b/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/widget.dart new file mode 100644 index 000000000..49af3a6ef --- /dev/null +++ b/lib/dashboard/drawer/ssi/oidc4vc_settngs/widget/widget.dart @@ -0,0 +1,2 @@ +export 'security_level_widget.dart'; +export 'six_or_four_pin_widget.dart';