diff --git a/lib/font/widgets/font_picker.dart b/lib/font/widgets/font_picker.dart index aa3b0aee..b42669c0 100644 --- a/lib/font/widgets/font_picker.dart +++ b/lib/font/widgets/font_picker.dart @@ -5,7 +5,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class FontPicker extends StatelessWidget { - const FontPicker({Key? key}) : super(key: key); + const FontPicker({Key? key, required this.onChanged}) : super(key: key); + + final ValueChanged onChanged; @override Widget build(BuildContext context) { @@ -46,7 +48,7 @@ class FontPicker extends StatelessWidget { void _onChanged(BuildContext context, FontData? data) { if (data != null) { - context.read().fontFamilyChanged(data.family); + onChanged(data); } } } diff --git a/lib/text_theme/cubits/text_theme_cubit.dart b/lib/text_theme/cubits/text_theme_cubit.dart index a49b800d..13b41b54 100644 --- a/lib/text_theme/cubits/text_theme_cubit.dart +++ b/lib/text_theme/cubits/text_theme_cubit.dart @@ -1,8 +1,8 @@ +import 'package:appainter/text_theme/text_theme.dart'; import 'package:bloc/bloc.dart'; import 'package:copy_with_extension/copy_with_extension.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; -import 'package:appainter/text_theme/text_theme.dart'; part 'text_theme_cubit.g.dart'; part 'text_theme_state.dart'; @@ -76,7 +76,7 @@ class TextThemeCubit extends Cubit { overlineTextStyleCubit.styleChanged(theme.overline); } - void fontFamilyChanged(String fontFamily) { - emit(state.copyWith(fontFamily: fontFamily)); + void fontFamilyChanged(FontData data) { + emit(state.copyWith(fontFamily: data.family)); } } diff --git a/lib/text_theme/view/text_theme_editor.dart b/lib/text_theme/view/text_theme_editor.dart index 5d3996ac..00a4c0d4 100644 --- a/lib/text_theme/view/text_theme_editor.dart +++ b/lib/text_theme/view/text_theme_editor.dart @@ -3,6 +3,7 @@ import 'package:appainter/font/font.dart'; import 'package:appainter/text_theme/text_theme.dart'; import 'package:appainter/widgets/widgets.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; class TextThemeEditor extends ExpansionPanelItem { const TextThemeEditor({Key? key}) : super(key: key); @@ -14,7 +15,9 @@ class TextThemeEditor extends ExpansionPanelItem { Widget build(BuildContext context) { return NestedListView( children: [ - const FontPicker(), + FontPicker( + onChanged: context.read().fontFamilyChanged, + ), MyExpansionPanelList( color: Theme.of(context).brightness == Brightness.dark ? Colors.grey[700] diff --git a/test/text_theme/font_picker_test.dart b/test/text_theme/font_picker_test.dart index dcc0cd74..1839d9a2 100644 --- a/test/text_theme/font_picker_test.dart +++ b/test/text_theme/font_picker_test.dart @@ -4,6 +4,7 @@ import 'package:bloc_test/bloc_test.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:mocktail/mocktail.dart'; import '../mocks.dart'; @@ -17,6 +18,7 @@ void main() { testWidgets('font picker should update font family', (tester) async { const fontFamily = 'ABeeZee'; + final style = GoogleFonts.aBeeZee(); whenListen( cubit, @@ -29,9 +31,11 @@ void main() { create: (context) => FontRepository(), child: BlocProvider.value( value: cubit, - child: const MaterialApp( + child: MaterialApp( home: Scaffold( - body: FontPicker(), + body: FontPicker( + onChanged: cubit.fontFamilyChanged, + ), ), ), ), @@ -44,6 +48,6 @@ void main() { await tester.pumpAndSettle(); expect(find.text(fontFamily), findsOneWidget); - verify(() => cubit.fontFamilyChanged(fontFamily)); + verify(() => cubit.fontFamilyChanged(FontData(fontFamily, style))); }); } diff --git a/test/text_theme/text_theme_cubit_test.dart b/test/text_theme/text_theme_cubit_test.dart index 7bcf1295..0bf0b931 100644 --- a/test/text_theme/text_theme_cubit_test.dart +++ b/test/text_theme/text_theme_cubit_test.dart @@ -1,12 +1,13 @@ +import 'package:appainter/text_theme/text_theme.dart'; import 'package:bloc_test/bloc_test.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:appainter/text_theme/text_theme.dart'; import 'package:mocktail/mocktail.dart'; import '../mocks.dart'; void main() { + const fontFamily = 'fontFamily'; late TextThemeCubit textThemeCubit; late TextTheme textTheme; @@ -166,7 +167,9 @@ void main() { blocTest( 'should emit font family', build: () => textThemeCubit, - act: (cubit) => cubit.fontFamilyChanged('newFont'), - expect: () => [const TextThemeState(fontFamily: 'newFont')], + act: (cubit) => cubit.fontFamilyChanged( + const FontData(fontFamily, TextStyle()), + ), + expect: () => [const TextThemeState(fontFamily: fontFamily)], ); }