Skip to content

Commit a7f004f

Browse files
authored
feat: update Flutter Quill and adapt code for new API (#2051)
1 parent 680b2aa commit a7f004f

File tree

8 files changed

+61
-21
lines changed

8 files changed

+61
-21
lines changed

catalyst_voices/apps/voices/lib/app/view/app_content.dart

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
88
import 'package:flutter/material.dart';
99
import 'package:flutter_bloc/flutter_bloc.dart';
1010
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
11+
import 'package:flutter_quill/flutter_quill.dart';
1112

1213
const _restorationScopeId = 'rootVoices';
1314

@@ -46,6 +47,7 @@ final class _AppContent extends StatelessWidget {
4647
return const [
4748
...VoicesLocalizations.localizationsDelegates,
4849
LocaleNamesLocalizationsDelegate(),
50+
FlutterQuillLocalizations.delegate,
4951
];
5052
}
5153

catalyst_voices/apps/voices/lib/widgets/rich_text/voices_rich_text.dart

+20-12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// ignore_for_file: avoid_dynamic_calls
2+
13
import 'dart:async';
24

35
import 'package:catalyst_voices/common/codecs/markdown_codec.dart';
@@ -12,7 +14,7 @@ import 'package:catalyst_voices_shared/catalyst_voices_shared.dart';
1214
import 'package:flutter/material.dart';
1315
import 'package:flutter/services.dart';
1416
import 'package:flutter_quill/flutter_quill.dart' as quill;
15-
import 'package:flutter_quill/flutter_quill_internal.dart' as quill_int;
17+
import 'package:flutter_quill/internal.dart' as quill_int;
1618
import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'
1719
as quill_ext;
1820

@@ -240,7 +242,7 @@ class _EditorState extends State<_Editor> {
240242
controller: widget.controller,
241243
focusNode: widget.focusNode,
242244
scrollController: widget.scrollController,
243-
configurations: quill.QuillEditorConfigurations(
245+
config: quill.QuillEditorConfig(
244246
padding: const EdgeInsets.all(16),
245247
placeholder: context.l10n.placeholderRichText,
246248
characterShortcutEvents: quill.standardCharactersShortcutEvents,
@@ -351,9 +353,9 @@ class _Toolbar extends StatelessWidget {
351353
return Container(
352354
color: Theme.of(context).colors.onSurfaceNeutralOpaqueLv1,
353355
padding: const EdgeInsets.symmetric(horizontal: 18),
354-
child: quill.QuillToolbar(
355-
configurations: const quill.QuillToolbarConfigurations(),
356-
child: Row(
356+
child: SingleChildScrollView(
357+
scrollDirection: Axis.horizontal,
358+
child: Wrap(
357359
children: [
358360
_ToolbarAttributeIconButton(
359361
controller: controller,
@@ -407,12 +409,15 @@ class _ToolbarAttributeIconButton extends StatelessWidget {
407409
controller: controller,
408410
attribute: attribute,
409411
options: quill.QuillToolbarToggleStyleButtonOptions(
410-
childBuilder: (options, extraOptions) {
412+
// TODO(minikin): We need to use dynamic here because
413+
// of the bug in the quill package.
414+
// https://github.com/singerdmx/flutter-quill/issues/2511
415+
childBuilder: (dynamic options, dynamic extraOptions) {
411416
return _ToolbarIconButton(
412417
icon: icon,
413-
tooltip: options.tooltip,
414-
isToggled: extraOptions.isToggled,
415-
onPressed: extraOptions.onPressed,
418+
tooltip: options.tooltip as String?,
419+
isToggled: extraOptions.isToggled as bool,
420+
onPressed: extraOptions.onPressed as VoidCallback?,
416421
);
417422
},
418423
),
@@ -454,12 +459,15 @@ class _ToolbarImageOptionButton extends StatelessWidget {
454459
return quill_ext.QuillToolbarImageButton(
455460
controller: controller,
456461
options: quill_ext.QuillToolbarImageButtonOptions(
457-
childBuilder: (options, extraOptions) {
462+
// TODO(minikin): We need to use dynamic here because
463+
// of the bug in the quill package.
464+
// https://github.com/singerdmx/flutter-quill/issues/2511
465+
childBuilder: (dynamic options, dynamic extraOptions) {
458466
return _ToolbarIconButton(
459467
icon: VoicesAssets.icons.photograph,
460-
tooltip: options.tooltip,
468+
tooltip: options.tooltip as String?,
461469
isToggled: false,
462-
onPressed: extraOptions.onPressed,
470+
onPressed: extraOptions.onPressed as VoidCallback?,
463471
);
464472
},
465473
),

catalyst_voices/apps/voices/lib/widgets/rich_text/voices_rich_text_rules.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_quill/flutter_quill.dart' as quill;
3-
import 'package:flutter_quill/flutter_quill_internal.dart' as quill_int;
3+
import 'package:flutter_quill/internal.dart' as quill_int;
44
import 'package:flutter_quill/quill_delta.dart';
55

66
/// Heuristic rule to exit current block when user inserts two consecutive

catalyst_voices/apps/voices/pubspec.yaml

+15-3
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,16 @@ dependencies:
4747
flutter_dropzone_web: 4.0.2
4848
flutter_localized_locales: ^2.0.5
4949
flutter_markdown: ^0.7.4+3
50-
flutter_quill: ^10.8.2
51-
flutter_quill_extensions: ^10.8.2
50+
# TODO(minikin): We use our forks as a temporary workaround for F14.
51+
flutter_quill:
52+
git:
53+
url: https://github.com/input-output-hk/flutter-quill
54+
ref: 41f37dcf56b97b1bffe10f012dc667795a30e74e
55+
flutter_quill_extensions:
56+
git:
57+
url: https://github.com/input-output-hk/flutter-quill
58+
path: flutter_quill_extensions
59+
ref: 41f37dcf56b97b1bffe10f012dc667795a30e74e
5260
flutter_secure_storage: ^9.2.2
5361
flutter_web_plugins:
5462
sdk: flutter
@@ -57,7 +65,11 @@ dependencies:
5765
google_fonts: ^6.2.1
5866
intl: ^0.19.0
5967
markdown: ^7.2.2
60-
markdown_quill: ^4.2.0
68+
# TODO(minikin): We use our forks as a temporary workaround for F14.
69+
markdown_quill:
70+
git:
71+
url: https://github.com/input-output-hk/markdown_quill
72+
ref: 059703222cae65bf5ad96ec75049c0c146d76b11
6173
mask_text_input_formatter: ^2.9.0
6274
result_type: ^0.2.0
6375
scrollable_positioned_list: ^0.3.8

catalyst_voices/apps/voices/test/helpers/pump_app.dart

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import 'package:catalyst_voices_brands/catalyst_voices_brands.dart';
22
import 'package:catalyst_voices_localization/catalyst_voices_localization.dart';
33
import 'package:flutter/material.dart';
44
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
5+
import 'package:flutter_quill/flutter_quill.dart'
6+
show FlutterQuillLocalizations;
57
import 'package:flutter_test/flutter_test.dart';
68

79
extension PumpApp on WidgetTester {
@@ -24,6 +26,7 @@ extension PumpApp on WidgetTester {
2426
localizationsDelegates: const [
2527
...VoicesLocalizations.localizationsDelegates,
2628
LocaleNamesLocalizationsDelegate(),
29+
FlutterQuillLocalizations.delegate,
2730
],
2831
supportedLocales: VoicesLocalizations.supportedLocales,
2932
locale: locale,

catalyst_voices/melos.yaml

+15-3
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,27 @@ command:
111111
flutter_dropzone_web: 4.0.2
112112
flutter_localized_locales: ^2.0.5
113113
flutter_markdown: ^0.7.4+3
114-
flutter_quill: ^10.8.2
115-
flutter_quill_extensions: ^10.8.2
114+
# TODO(minikin): We use our forks as a temporary workaround for F14.
115+
flutter_quill:
116+
git:
117+
url: https://github.com/input-output-hk/flutter-quill
118+
ref: 41f37dcf56b97b1bffe10f012dc667795a30e74e
119+
flutter_quill_extensions:
120+
git:
121+
url: https://github.com/input-output-hk/flutter-quill
122+
path: flutter_quill_extensions
123+
ref: 41f37dcf56b97b1bffe10f012dc667795a30e74e
116124
flutter_rust_bridge: 2.5.1
117125
flutter_secure_storage: ^9.2.2
118126
formz: ^0.7.0
119127
intl: ^0.19.0
120128
logging: ^1.3.0
121129
markdown: ^7.2.2
122-
markdown_quill: ^4.2.0
130+
# TODO(minikin): We use our forks as a temporary workaround for F14.
131+
markdown_quill:
132+
git:
133+
url: https://github.com/input-output-hk/markdown_quill
134+
ref: 059703222cae65bf5ad96ec75049c0c146d76b11
123135
meta: ^1.16.0
124136
result_type: ^0.2.0
125137
rxdart: ^0.27.7

catalyst_voices/packages/internal/catalyst_voices_assets/assets/document_templates/proposal/F14-Generic/example.proposal.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@
152152
},
153153
"pitch": {
154154
"team": {
155-
"who": "Our team consists of experienced blockchain developers with proven track records..."
155+
"who": "Our team consists of experienced blockchain developers with proven track records...\n- **This is a test of the image which can be rendered**. ![](https://images.pexels.com/photos/30432517/pexels-photo-30432517/free-photo-of-people-walking-on-historic-railway-platform.jpeg) \n- **This is a test of the image which can't be rendered**. ![](https://picography.co/wp-content/uploads/2024/10/picography-rustic-wood-slices-768x1152.jpg)"
156156
},
157157
"budget": {
158158
"costs": "Budget breakdown:\n- Development (70%): 105,000 ADA\n- Testing (15%): 22,500 ADA\n- Documentation (15%): 22,500 ADA"

catalyst_voices/utilities/uikit_example/pubspec.yaml

+4-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ dependencies:
3030
sdk: flutter
3131
flutter_bloc: ^8.1.5
3232
flutter_localized_locales: ^2.0.5
33-
flutter_quill: ^10.8.2
33+
flutter_quill:
34+
git:
35+
url: https://github.com/input-output-hk/flutter-quill
36+
ref: 41f37dcf56b97b1bffe10f012dc667795a30e74e
3437

3538
dev_dependencies:
3639
build_runner: ^2.4.12

0 commit comments

Comments
 (0)