mirror of
https://github.com/88srzh/comics_db.git
synced 2025-05-17 14:05:58 +08:00
added button to custom appbar widget
This commit is contained in:
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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(),
|
||||
);
|
||||
}
|
||||
|
@ -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),
|
||||
|
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
Reference in New Issue
Block a user