diff --git a/.snap b/.snap new file mode 100644 index 0000000..e69de29 diff --git a/_ b/_ new file mode 100644 index 0000000..e69de29 diff --git a/lib/ui/components/custom_appbar_widget.dart b/lib/ui/components/custom_appbar_widget.dart index 70207e6..8bd5bba 100644 --- a/lib/ui/components/custom_appbar_widget.dart +++ b/lib/ui/components/custom_appbar_widget.dart @@ -7,25 +7,87 @@ import 'package:provider/provider.dart'; // Project imports: import 'package:comics_db_app/core/dark_theme_colors.dart'; import 'package:comics_db_app/domain/blocs/theme/theme_bloc.dart'; +import 'package:comics_db_app/generated/l10n.dart'; -class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { +class CustomAppBar extends StatefulWidget implements PreferredSizeWidget { final String title; const CustomAppBar({super.key, required this.title}); @override - Widget build(BuildContext context) { - return AppBar( - title: Text( - title, - style: TextStyle( - color: context.read().isDarkTheme ? Colors.white : DarkThemeColors.kPrimaryColor, - ), - ), - centerTitle: true, - ); - } + State createState() => _CustomAppBarState(); @override Size get preferredSize => const Size.fromHeight(60); } + +class _CustomAppBarState extends State { + @override + Widget build(BuildContext context) { + return AppBar( + title: Text( + widget.title, + style: TextStyle( + color: context.read().isDarkTheme ? Colors.white : DarkThemeColors.kPrimaryColor, + ), + ), + actions: [ + CustomAppBarLanguageContainerWidget( + onTap: () => setState( + () { + S.load(const Locale('ru')); + }, + ), + text: 'RU', + ), + const SizedBox(width: 4.0), + CustomAppBarLanguageContainerWidget( + onTap: () => setState( + () { + S.load(const Locale('en')); + }, + ), + text: 'EN', + ), + const SizedBox(width: 8.0), + ], + centerTitle: true, + ); + } +} + +class CustomAppBarLanguageContainerWidget extends StatelessWidget { + final GestureTapCallback onTap; + final String text; + + const CustomAppBarLanguageContainerWidget({ + super.key, + required this.onTap, + required this.text, + }); + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: onTap, + child: Container( + decoration: BoxDecoration( + border: Border.all( + width: 1.0, + color: context.read().isDarkTheme ? Colors.white : DarkThemeColors.kPrimaryColor, + ), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Text( + text, + style: TextStyle( + fontSize: 13, + color: context.read().isDarkTheme ? Colors.white : DarkThemeColors.kPrimaryColor, + ), + ), + ), + ), + ); + } +} diff --git a/lib/ui/widgets/account/account_widget.dart b/lib/ui/widgets/account/account_widget.dart index 5273dd8..82ca12e 100644 --- a/lib/ui/widgets/account/account_widget.dart +++ b/lib/ui/widgets/account/account_widget.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; // Project imports: +import 'package:comics_db_app/ui/components/custom_appbar_widget.dart'; import 'package:comics_db_app/ui/widgets/account/components/body_account_details_widget.dart'; // Package imports: @@ -18,6 +19,7 @@ class _AccountWidgetState extends State { @override Widget build(BuildContext context) { return const Scaffold( + appBar: CustomAppBar(title: 'Account'), body: BodyPersonalWidget(), ); } diff --git a/lib/ui/widgets/account/components/body_account_details_widget.dart b/lib/ui/widgets/account/components/body_account_details_widget.dart index d704b2b..d23dc28 100644 --- a/lib/ui/widgets/account/components/body_account_details_widget.dart +++ b/lib/ui/widgets/account/components/body_account_details_widget.dart @@ -44,10 +44,11 @@ class _BodyPersonalWidgetState extends State { context.read().setupAccountDetails(context, locale.languageCode); } + bool change = false; + @override Widget build(BuildContext context) { final cubit = context.watch(); - bool change = false; // final Color titleColor = context.read().isDarkTheme ? DarkThemeColors.titleColor : Colors.white; // TODO name don't work // final name = cubit.state.name; @@ -74,36 +75,24 @@ class _BodyPersonalWidgetState extends State { const CustomSettingDivider(height: 0.8), const SettingsCardWidget(), const CustomSettingDivider(height: 0.8), - SwitchListTile( - value: change, - onChanged: (bool value) { - setState( - () { - S.load(const Locale('ru')); - change = value; - }, - ); - }, - title: Text( - 'Change language (RU/EN)', - style: Theme.of(context).textTheme.displayMedium, - ), - ), const AccountChangeLanguageWidget(), - ElevatedButton( - onPressed: () { - setState(() { + Row( + children: [ + ElevatedButton( + onPressed: () => setState(() { S.load(const Locale('ru')); - }); - }, - child: const Text('Ru')), - ElevatedButton( - onPressed: () { - setState(() { + }), + child: const Text('RU'), + ), + ElevatedButton( + onPressed: () => setState(() { S.load(const Locale('en')); - }); - }, - child: const Text('EN')), + }), + child: const Text('EN'), + ), + ], + ), + const CustomSettingDivider(height: 0.8), const NotificationsCardWidget(), const CustomSettingDivider(height: 0.8), diff --git a/lib/ui/widgets/tv_details/components/genres_widget.dart b/lib/ui/widgets/tv_details/components/genres_widget.dart index f063256..33b281c 100644 --- a/lib/ui/widgets/tv_details/components/genres_widget.dart +++ b/lib/ui/widgets/tv_details/components/genres_widget.dart @@ -1,8 +1,13 @@ +// Flutter imports: +import 'package:flutter/material.dart'; + +// Package imports: +import 'package:provider/provider.dart'; + +// Project imports: import 'package:comics_db_app/core/dark_theme_colors.dart'; import 'package:comics_db_app/domain/blocs/theme/theme_bloc.dart'; import 'package:comics_db_app/ui/widgets/tv_details/tv_details_cubit.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class GenresWidget extends StatelessWidget { const GenresWidget({super.key}); @@ -30,7 +35,6 @@ class GenresWidget extends StatelessWidget { fontSize: 13, color: context.read().isDarkTheme ? DarkThemeColors.ratingThumb : DarkThemeColors.kPrimaryColor, ), - // style: Theme.of(context).textTheme.headlineMedium, ), ), ),