added button to custom appbar widget

This commit is contained in:
srzh
2024-03-10 19:11:00 +04:00
parent debe01f5d4
commit c259a2206b
6 changed files with 100 additions and 43 deletions

0
.snap Normal file
View File

0
_ Normal file
View File

View File

@ -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<ThemeBloc>().isDarkTheme ? Colors.white : DarkThemeColors.kPrimaryColor,
),
),
centerTitle: true,
);
}
State<CustomAppBar> createState() => _CustomAppBarState();
@override
Size get preferredSize => const Size.fromHeight(60);
}
class _CustomAppBarState extends State<CustomAppBar> {
@override
Widget build(BuildContext context) {
return AppBar(
title: Text(
widget.title,
style: TextStyle(
color: context.read<ThemeBloc>().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<ThemeBloc>().isDarkTheme ? Colors.white : DarkThemeColors.kPrimaryColor,
),
),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 4.0),
child: Text(
text,
style: TextStyle(
fontSize: 13,
color: context.read<ThemeBloc>().isDarkTheme ? Colors.white : DarkThemeColors.kPrimaryColor,
),
),
),
),
);
}
}

View File

@ -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<AccountWidget> {
@override
Widget build(BuildContext context) {
return const Scaffold(
appBar: CustomAppBar(title: 'Account'),
body: BodyPersonalWidget(),
);
}

View File

@ -44,10 +44,11 @@ class _BodyPersonalWidgetState extends State<BodyPersonalWidget> {
context.read<AccountDetailsCubit>().setupAccountDetails(context, locale.languageCode);
}
bool change = false;
@override
Widget build(BuildContext context) {
final cubit = context.watch<AccountDetailsCubit>();
bool change = false;
// final Color titleColor = context.read<ThemeBloc>().isDarkTheme ? DarkThemeColors.titleColor : Colors.white;
// TODO name don't work
// final name = cubit.state.name;
@ -74,36 +75,24 @@ class _BodyPersonalWidgetState extends State<BodyPersonalWidget> {
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),

View File

@ -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<ThemeBloc>().isDarkTheme ? DarkThemeColors.ratingThumb : DarkThemeColors.kPrimaryColor,
),
// style: Theme.of(context).textTheme.headlineMedium,
),
),
),