From 13bb5d0b081f5c8694a8d5737791a94c74fe2af8 Mon Sep 17 00:00:00 2001 From: Ahmed Hnewa <73608287+freshtechtips@users.noreply.github.com> Date: Sat, 21 Oct 2023 01:05:40 +0300 Subject: [PATCH] Fix conflict with flutter_quill_extension --- example/lib/pages/home_page.dart | 109 +++++++++--------- example/lib/pages/read_only_page.dart | 2 +- example/lib/widgets/demo_scaffold.dart | 2 +- .../lib/widgets/time_stamp_embed_widget.dart | 2 +- .../lib/embeds/builders.dart | 2 +- .../lib/embeds/toolbar/camera_button.dart | 2 +- .../lib/embeds/toolbar/image_video_utils.dart | 2 +- .../lib/embeds/toolbar/media_button.dart | 2 +- flutter_quill_extensions/pubspec.yaml | 6 +- lib/extensions.dart | 2 +- lib/src/models/documents/nodes/leaf.dart | 6 +- .../widgets/toolbar/link_style_button2.dart | 3 +- 12 files changed, 74 insertions(+), 66 deletions(-) diff --git a/example/lib/pages/home_page.dart b/example/lib/pages/home_page.dart index 29fd7ea1..c52369f1 100644 --- a/example/lib/pages/home_page.dart +++ b/example/lib/pages/home_page.dart @@ -9,7 +9,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_quill/extensions.dart'; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'; import 'package:path/path.dart' as path; import 'package:path_provider/path_provider.dart'; @@ -31,6 +31,7 @@ class HomePage extends StatefulWidget { class _HomePageState extends State { late final QuillController _controller; + late final Future _loadDocumentFromAssetsFuture; final FocusNode _focusNode = FocusNode(); Timer? _selectAllTimer; _SelectionType _selectionType = _SelectionType.none; @@ -46,7 +47,7 @@ class _HomePageState extends State { @override void initState() { super.initState(); - _loadFromAssets(); + _loadDocumentFromAssetsFuture = _loadFromAssets(); } Future _loadFromAssets() async { @@ -55,66 +56,68 @@ class _HomePageState extends State { ? 'assets/sample_data_nomedia.json' : 'assets/sample_data.json'); final doc = Document.fromJson(jsonDecode(result)); - setState(() { - _controller = QuillController( - document: doc, - selection: const TextSelection.collapsed(offset: 0), - ); - }); + _controller = QuillController( + document: doc, + selection: const TextSelection.collapsed(offset: 0), + ); } catch (error) { final doc = Document()..insert(0, 'Empty asset'); - setState(() { - _controller = QuillController( - document: doc, - selection: const TextSelection.collapsed(offset: 0), - ); - }); + _controller = QuillController( + document: doc, + selection: const TextSelection.collapsed(offset: 0), + ); } } @override Widget build(BuildContext context) { - if (_controller == null) { - return const Scaffold(body: Center(child: Text('Loading...'))); - } - - return Scaffold( - appBar: AppBar( - backgroundColor: Colors.grey.shade800, - elevation: 0, - centerTitle: false, - title: const Text( - 'Flutter Quill', - ), - actions: [ - IconButton( - onPressed: () => _insertTimeStamp( - _controller, - DateTime.now().toString(), + return FutureBuilder( + future: _loadDocumentFromAssetsFuture, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Scaffold( + body: Center(child: CircularProgressIndicator.adaptive()), + ); + } + return Scaffold( + appBar: AppBar( + backgroundColor: Colors.grey.shade800, + elevation: 0, + centerTitle: false, + title: const Text( + 'Flutter Quill', ), - icon: const Icon(Icons.add_alarm_rounded), - ), - IconButton( - onPressed: () => showDialog( - context: context, - builder: (context) => AlertDialog( - content: Text(_controller.document.toPlainText([ - ...FlutterQuillEmbeds.builders(), - TimeStampEmbedBuilderWidget() - ])), + actions: [ + IconButton( + onPressed: () => _insertTimeStamp( + _controller, + DateTime.now().toString(), + ), + icon: const Icon(Icons.add_alarm_rounded), ), - ), - icon: const Icon(Icons.text_fields_rounded), - ) - ], - ), - drawer: Container( - constraints: - BoxConstraints(maxWidth: MediaQuery.sizeOf(context).width * 0.7), - color: Colors.grey.shade800, - child: _buildMenuBar(context), - ), - body: _buildWelcomeEditor(context), + IconButton( + onPressed: () => showDialog( + context: context, + builder: (context) => AlertDialog( + content: Text(_controller.document.toPlainText([ + ...FlutterQuillEmbeds.builders(), + TimeStampEmbedBuilderWidget() + ])), + ), + ), + icon: const Icon(Icons.text_fields_rounded), + ) + ], + ), + drawer: Container( + constraints: BoxConstraints( + maxWidth: MediaQuery.sizeOf(context).width * 0.7), + color: Colors.grey.shade800, + child: _buildMenuBar(context), + ), + body: _buildWelcomeEditor(context), + ); + }, ); } diff --git a/example/lib/pages/read_only_page.dart b/example/lib/pages/read_only_page.dart index f56236c4..5f04b987 100644 --- a/example/lib/pages/read_only_page.dart +++ b/example/lib/pages/read_only_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_quill/extensions.dart'; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'; import '../universal_ui/universal_ui.dart'; diff --git a/example/lib/widgets/demo_scaffold.dart b/example/lib/widgets/demo_scaffold.dart index 64c8675a..61cb8b10 100644 --- a/example/lib/widgets/demo_scaffold.dart +++ b/example/lib/widgets/demo_scaffold.dart @@ -5,7 +5,7 @@ import 'package:filesystem_picker/filesystem_picker.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill_extensions/flutter_quill_extensions.dart'; import 'package:path_provider/path_provider.dart'; diff --git a/example/lib/widgets/time_stamp_embed_widget.dart b/example/lib/widgets/time_stamp_embed_widget.dart index e1714129..cf922952 100644 --- a/example/lib/widgets/time_stamp_embed_widget.dart +++ b/example/lib/widgets/time_stamp_embed_widget.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; class TimeStampEmbed extends Embeddable { const TimeStampEmbed( diff --git a/flutter_quill_extensions/lib/embeds/builders.dart b/flutter_quill_extensions/lib/embeds/builders.dart index 6a362876..8ea23202 100644 --- a/flutter_quill_extensions/lib/embeds/builders.dart +++ b/flutter_quill_extensions/lib/embeds/builders.dart @@ -5,7 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_quill/extensions.dart' as base; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill/translations.dart'; import 'package:math_keyboard/math_keyboard.dart'; import 'package:universal_html/html.dart' as html; diff --git a/flutter_quill_extensions/lib/embeds/toolbar/camera_button.dart b/flutter_quill_extensions/lib/embeds/toolbar/camera_button.dart index cdc560a0..d654425c 100644 --- a/flutter_quill_extensions/lib/embeds/toolbar/camera_button.dart +++ b/flutter_quill_extensions/lib/embeds/toolbar/camera_button.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill/translations.dart'; import 'package:image_picker/image_picker.dart'; diff --git a/flutter_quill_extensions/lib/embeds/toolbar/image_video_utils.dart b/flutter_quill_extensions/lib/embeds/toolbar/image_video_utils.dart index 0daa2cd6..66045a51 100644 --- a/flutter_quill_extensions/lib/embeds/toolbar/image_video_utils.dart +++ b/flutter_quill_extensions/lib/embeds/toolbar/image_video_utils.dart @@ -3,7 +3,7 @@ import 'dart:io' show File; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_quill/extensions.dart'; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill/translations.dart'; import 'package:image_picker/image_picker.dart'; diff --git a/flutter_quill_extensions/lib/embeds/toolbar/media_button.dart b/flutter_quill_extensions/lib/embeds/toolbar/media_button.dart index 37849ef5..135f4536 100644 --- a/flutter_quill_extensions/lib/embeds/toolbar/media_button.dart +++ b/flutter_quill_extensions/lib/embeds/toolbar/media_button.dart @@ -4,7 +4,7 @@ import 'dart:ui'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_quill/extensions.dart'; -import 'package:flutter_quill/flutter_quill.dart' hide QuillText; +import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill/translations.dart'; import 'package:image_picker/image_picker.dart'; diff --git a/flutter_quill_extensions/pubspec.yaml b/flutter_quill_extensions/pubspec.yaml index 52941035..3bb2a82f 100644 --- a/flutter_quill_extensions/pubspec.yaml +++ b/flutter_quill_extensions/pubspec.yaml @@ -12,10 +12,10 @@ dependencies: flutter: sdk: flutter - # flutter_quill: ^7.4.16 + flutter_quill: ^7.4.16 # In case you are working on changes for both libraries, - flutter_quill: - path: /Users/ahmedhnewa/development/playground/framework_based/flutter/flutter-quill + # flutter_quill: + # path: ~/development/playground/framework_based/flutter/flutter-quill http: ^1.1.0 image_picker: ">=1.0.4" diff --git a/lib/extensions.dart b/lib/extensions.dart index 94971ce2..b7c2b0af 100644 --- a/lib/extensions.dart +++ b/lib/extensions.dart @@ -1,6 +1,6 @@ library flutter_quill.extensions; -export 'src/models/documents/nodes/leaf.dart' hide QuillText; +export 'src/models/documents/nodes/leaf.dart' hide Text; export 'src/models/rules/insert.dart'; export 'src/utils/platform.dart'; export 'src/utils/string.dart'; diff --git a/lib/src/models/documents/nodes/leaf.dart b/lib/src/models/documents/nodes/leaf.dart index cb7b39c8..556590bc 100644 --- a/lib/src/models/documents/nodes/leaf.dart +++ b/lib/src/models/documents/nodes/leaf.dart @@ -200,6 +200,9 @@ abstract class Leaf extends Node { } } +@Deprecated('Please use [QuillText] instead') +class Text extends QuillText {} + /// A span of formatted text within a line in a Quill document. /// /// Text is a leaf node of a document tree. @@ -213,8 +216,9 @@ abstract class Leaf extends Node { /// * [Line], a node representing a line of text. /// /// Update: -/// The reason we are renamed quill [Text] to [QuillText] so it doesn't +/// The reason we are renamed quill Text to [QuillText] so it doesn't /// conflict with the one from the widgets, material or cupertino library +/// class QuillText extends Leaf { QuillText([String text = '']) : assert(!text.contains('\n')), diff --git a/lib/src/widgets/toolbar/link_style_button2.dart b/lib/src/widgets/toolbar/link_style_button2.dart index 9e3de80e..3655534d 100644 --- a/lib/src/widgets/toolbar/link_style_button2.dart +++ b/lib/src/widgets/toolbar/link_style_button2.dart @@ -2,7 +2,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/link.dart'; -import '../../../extensions.dart'; +import '../../../extensions.dart' + show UtilityWidgets, AutoFormatMultipleLinksRule; import '../../../translations.dart'; import '../../models/documents/attribute.dart'; import '../../models/themes/quill_dialog_theme.dart';