Skip to content

Commit a9859f9

Browse files
authored
feat: Use quill_native_bridge as default impl in DefaultClipboardService, fix related bugs in the extensions package (singerdmx#2230)
* feat(quill_native_bridge): add initial implementation for getClipboardHTML() method channel for Android and iOS, example and Android platform directory * chore(example): use quill_native_bridge from path in dependency_overrides * feat: use quill_native_bridge for HTML Clipboard in flutter_quill and the example (initial impl) * feat(quill_native_bridge): extend the support for macOS. * chore(example): clear todos in app module build.gradle * chore(android): additional check before accessing the clip data item * fix(flutter_quill_extensions): unrelated bug for copying an image (needs further fixes) * feat: add copyImageToClipboard() method channel, an asset file in the example, and set supported platforms in pubspec.yaml, configure quill_native_bridge example * docs(readme): add an optional step to configure copying images to the clipboard on Android for quill_native_bridge * feat: use copyImageToClipboard() in flutter_quill_extensions, fix common issues in the copy image button * chore: correct name of _loadImageBytesFromImageProvider() * feat: add web support for copyImageToClipboard() * feat: (WIP) retrieving image files from the clipboard, simplifying ClipboardService, slightly updating Android, disabling copyImageToClipboard() for web (temporarily). WIP * chore(example): rename _flutterQuillAssetImage to _kFlutterQuillAssetImage * chore(example): update error messages in quill_native_bridge example * feat: add support for gif, fix unhandled exception on Android only when getting an image from the clipboard before closing the app on a new app start, clean up the platform support check * chore(example): configure the Android example for copying images to the system clipboard, update README.md * feat: support for web (WIP, will be updated soon) * chore: annotate ClipboardService and related classes as experimental * chore: temporarily add dependency_overrides to fix build failure - revert this change later * feat: separate web implementation from quill_native_bridge into quill_native_bridge_web * chore: update description of quill_native_bridge_web * chore(web): avoid using jsify() when possible * chore: publish and use quill_native_bridge_web in quill_native_bridge, update to the newly published quill_native_bridge in flutter_quill * docs(readme): use pub.dev link of quill_native_bridge in quill_native_bridge_web * chore: use .toJS in clipboardItem map (minor change) * fix: use hosted quill_native_bridge in dependencies and override with the local path in dependency_overrides * fix: update minimum required version of Flutter/Dart by quill_native_bridge * test: write basic integration tests for getClipboardImage() and copyImageToClipboard() * feat: add copyHTMLToClipboard(), add integration tests for copyHTMLToClipboard() and getClipboardHTML(), minor cleanup in the example * chore: cleanup QuillNativeBridgeWeb, extract mime constants, organize the order of implemented methods * fix(web): issue caused by previous commit * docs(web): update methods of QuillNativeBridge to reflect the web support * chore(android): cleanup the check for HTML from the clipboard in getClipboardHTML * test: add a test for getClipboardHTML to ensure it's not null only when the HTML item is the last/primary * ci: attempt to fix CI failure by updating the outdated path of quill_native_bridge after splitting the web implementation * docs: document why platform implementations of QuillNativeBridgePlatform should extend it rather than implements * chore(example): add Windows platform runner example using Flutter CLI (change is automated) * feat: (WIP) add windows experimental support for getClipboardHTML(), new integration test to ensure the HTML is parsable * fix(docs): update incorrect description of quill_native_bridge_windows in README * refactor: move plugin platform interface to quill_native_bridge_platform_interface * chore: (WIP): publish quill_native_bridge 10.7.5 * chore: (WIP) publish quill_native_bridge_web to use quill_native_bridge_platform_interface * chore(example): add Linux platform runner example using Flutter CLI (change is automated) * feat(linux): (WIP) highly experimental Linux support using xclip * fix(windows): non case sensitive check in stripWin32HtmlDescription() suggested by @AtlasAutocode * chore(example): unrelated change for windows in Flutter Quill example due to using flutter_inappwebview_windows without running the example on windows (outside of this PR) * chore(android): cleanup onMethodCall() in QuillNativeBridgePlugin * docs(readme): update docs to reflect the changes * chore: use hasWebSupport instead of hardcoding the check directly in QuillNativeBridgePlatformFeature.isSupported * feat: rename MethodChannelQuillNativeBridge.methodChannel to testMethodChannel, check in development mode to ensure that testMethodChannel can be only used in unit tests for non-web platforms * refactor: move android implementation from quill_native_bridge to quill_native_bridge_android, use pigeon for Android * chore: update QuillNativeBridgeAndroid.registerWith() assert message * refactor(apple): move iOS and macOS implementation from quill_native_bridge to quill_native_bridge_ios and quill_native_bridge_macos, use pigeon for iOS and macOS, clean the code and update QuillNativeBridge to QuillNativeBridgeImpl on Android * chore: add quill_native_bridge_platform_interface in pubspec_overides.yaml of quill_native_bridge * refactor: rename copyHTMLToClipboard() and getClipboardHTML() to copyHtmlToClipboard() and getClipboardHtml() * feat: more advanced method to check the platform support check allowing each platform to have its own check, publish a new experimental version of quill_native_version * chore(analysis): remove unused imports in quill_native_bridge and quill_native_bridge_platform_interface * fix(ci): temporarily pub get quill_native_bridge packages in main workflow * chore: format dart pigeon generated files as a workaround to CI failure * chore(deps): update flutter_lints to 5.0.0 in quill_native_bridge * refactor(windows): move CloseClipboard() to finally block in getClipboardHtml() * chore(windows): clear todo related to previous commit * chore(readme): remove description from the platform support table, use emojis instead of text for readability * chore(readme): use different emoji for platforms that don't support a feature or are inapplicable in the platform support table * style(windows): use TEXT and free from win32 instead of toNativeUtf16() and calloc.free(pointer) from ffi * refactor(windows): only register HTML format id once * feat(windows): (WIP) highly experimental support for copyHtmlToClipboard(), minor cleanup (need more) * refactor: extract supported platforms into Set for isSupported() * chore(windows): add error code in errors using GetLastError() * chore(windows): avoid passing the locked memory pointer to SetClipboardData() in copyHtmlToClipboard() * docs(readme): document android platform configuration in quill_native_bridge * fix(windows): (WIP) GlobalUnlock before SetClipboardData and GlobalFree on SetClipboardData failure * docs(readme): slightly improve platform configuration docs in quill_native_bridge * fix(windows): GlobalUnlock() the handle instead of pointer before calling GlobalUnlock() * chore(android): add reference to Flutter #63533 * chore(android): define package in GeneratedMessages.kt, update related imports * chore(android): ignore analysis warning for the generated code messages.g.dart * feat: (WIP) add initial support for getClipboardFiles() * chore(ci): format generated messages.g.dart file to bypass CI failure * feat(linux): add support for getClipboardFiles() * docs: update the old reference of QuillNativeBridgeFeature, add doc comment for the library * chore(readme): add link for quill_native_bridge, correct minor typo * chore(docs): minor changes to update the doc comment in QuillController * chore: move quill_native_bridge to https://github.com/FlutterQuill/quill-native-bridge * docs(readme): improve the 'Rich Text Paste' section, drop the TODO for providing a way to customize the paste behavior and customize the clipboard operations * chore: update deprecation message of FlutterQuillExtensions.useSuperClipboardPlugin() to reflect the change * chore(example): remove the comment of deprecated method FlutterQuillExtensions.useSuperClipboardPlugin() * chore: rename ClipboardService.copyImageToClipboard() to ClipboardService.copyImage() (non-breaking change) * chore: add a link to a TODO in DefaultClipboardService._getClipboardFile()
1 parent 6dbf0f7 commit a9859f9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+269
-3646
lines changed

.github/workflows/main.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ jobs:
3333
- name: 📦 Install flutter_quill_test dependencies
3434
run: flutter pub get -C flutter_quill_test
3535

36-
- name: 📦 Install quill_native_bridge dependencies
37-
run: flutter pub get -C quill_native_bridge
38-
3936
- name: 🔍 Run Flutter analysis
4037
run: flutter analyze
4138

README.md

Lines changed: 57 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ You can join our [Slack Group] for discussion.
5959
- [📦 Embed Blocks](#-embed-blocks)
6060
- [🔄 Conversion to HTML](#-conversion-to-html)
6161
- [📝 Spelling checker](#-spelling-checker)
62+
- [📝 Rich Text Paste](#-rich-text-paste)
6263
- [✂️ Shortcut events](#-shortcut-events)
6364
- [🌐 Translation](#-translation)
6465
- [🧪 Testing](#-testing)
@@ -108,20 +109,57 @@ dependencies:
108109
109110
The `flutter_quill` package uses the following plugins:
110111

111-
1. [`url_launcher`](https://pub.dev/packages/url_launcher) to open links.
112-
2. [`quill_native_bridge`](https://pub.dev/packages/quill_native_bridge) to access platform-specific APIs for the
112+
1. [`url_launcher`](https://pub.dev/packages/url_launcher): to open links.
113+
2. [`quill_native_bridge`](https://pub.dev/packages/quill_native_bridge): to access platform-specific APIs for the
113114
editor.
114115
3. [`flutter_keyboard_visibility_temp_fork`](https://pub.dev/packages/flutter_keyboard_visibility_temp_fork) to listen for keyboard
115-
visibility
116-
changes.
116+
visibility changes.
117117

118-
All of them don't require any platform-specific setup.
118+
### Android Configuration for `quill_native_bridge`
119+
120+
To support copying images to the clipboard to be accessed by other apps, you need to configure your Android project.
121+
If not set up, a warning will appear in the log during debug mode only.
122+
123+
> [!TIP]
124+
> This is only required on **Android** for this optional feature.
125+
> You should be able to copy images and paste them inside the editor without any additional configuration.
126+
127+
**1. Update `AndroidManifest.xml`**
128+
129+
Open `your_project/android/app/src/main/AndroidManifest.xml` and add the following inside the `<application>` tag:
130+
131+
```xml
132+
<manifest>
133+
<application>
134+
...
135+
<provider
136+
android:name="androidx.core.content.FileProvider"
137+
android:authorities="${applicationId}.fileprovider"
138+
android:exported="false"
139+
android:grantUriPermissions="true" >
140+
<meta-data
141+
android:name="android.support.FILE_PROVIDER_PATHS"
142+
android:resource="@xml/file_paths" />
143+
</provider>
144+
...
145+
</application>
146+
</manifest>
147+
```
148+
149+
**2. Create `file_paths.xml`**
150+
151+
Create the file `your_project/android/app/src/main/res/xml/file_paths.xml` with the following content:
152+
153+
```xml
154+
<paths>
155+
<cache-path name="cache" path="." />
156+
</paths>
157+
```
119158

120159
> [!NOTE]
121-
> Starting from Flutter Quill `9.4.x`, [super_clipboard](https://pub.dev/packages/super_clipboard) has been moved
122-
> to [FlutterQuill Extensions], to use rich text pasting, support pasting images, and gif files from external apps or
123-
> websites, take a look
124-
> at `flutter_quill_extensions` Readme.
160+
> [super_clipboard](https://pub.dev/packages/super_clipboard) is no longer required
161+
> in recent versions of Flutter Quill in `flutter_quill` or `flutter_quill_extensions`.
162+
> [`quill_native_bridge`](https://pub.dev/packages/quill_native_bridge) is a plugin that provide clipboard operations functionality for `flutter_quill`.
125163

126164
## 🚀 Usage
127165

@@ -307,6 +345,16 @@ The following packages can be used:
307345
This feature is currently not implemented and is being planned. Refer to [#2246](https://github.com/singerdmx/flutter-quill/issues/2246)
308346
for discussion.
309347

348+
## 📝 Rich Text Paste
349+
350+
This feature allows the user to paste the content copied from other apps into the editor as rich text.
351+
The plugin [`quill_native_bridge`](https://pub.dev/packages/quill_native_bridge) provides access to the system Clipboard.
352+
353+
> [!IMPORTANT]
354+
> Currently this feature is not supported on the web.
355+
> See [issue #1998](https://github.com/singerdmx/flutter-quill/issues/1998) and [issue #2220](https://github.com/singerdmx/flutter-quill/issues/2220)
356+
for more details
357+
310358
## ✂️ Shortcut events
311359

312360
We can customize some Shorcut events, using the parameters `characterShortcutEvents` or `spaceShortcutEvents` from `QuillEditorConfigurations` to add more functionality to our editor.

example/android/app/src/main/AndroidManifest.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,16 @@
6262
android:authorities="com.example.example.SuperClipboardDataProvider"
6363
android:exported="true"
6464
android:grantUriPermissions="true" />
65+
66+
<!-- For `quill_native_bridge` plugin https://github.com/FlutterQuill/quill-native-bridge/tree/main/quill_native_bridge#-platform-configuration -->
67+
<provider
68+
android:name="androidx.core.content.FileProvider"
69+
android:authorities="${applicationId}.fileprovider"
70+
android:exported="false"
71+
android:grantUriPermissions="true" >
72+
<meta-data
73+
android:name="android.support.FILE_PROVIDER_PATHS"
74+
android:resource="@xml/file_paths" />
75+
</provider>
6576
</application>
6677
</manifest>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<paths>
2+
<cache-path name="cache" path="." />
3+
</paths>

example/lib/main.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'package:flutter_localizations/flutter_localizations.dart'
77
GlobalWidgetsLocalizations;
88
import 'package:flutter_quill/flutter_quill.dart' show Document;
99
import 'package:flutter_quill/translations.dart' show FlutterQuillLocalizations;
10-
import 'package:flutter_quill_extensions/flutter_quill_extensions.dart';
1110

1211
import 'screens/home/widgets/home_screen.dart';
1312
import 'screens/quill/quill_screen.dart';
@@ -20,8 +19,6 @@ import 'screens/settings/widgets/settings_screen.dart';
2019

2120
void main() async {
2221
WidgetsFlutterBinding.ensureInitialized();
23-
// ignore: deprecated_member_use
24-
FlutterQuillExtensions.useSuperClipboardPlugin();
2522
runApp(const MyApp());
2623
}
2724

example/macos/Flutter/GeneratedPluginRegistrant.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import file_selector_macos
1111
import gal
1212
import irondash_engine_context
1313
import path_provider_foundation
14+
import quill_native_bridge_macos
1415
import share_plus
1516
import sqflite
1617
import super_native_extensions
@@ -24,6 +25,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
2425
GalPlugin.register(with: registry.registrar(forPlugin: "GalPlugin"))
2526
IrondashEngineContextPlugin.register(with: registry.registrar(forPlugin: "IrondashEngineContextPlugin"))
2627
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
28+
QuillNativeBridgePlugin.register(with: registry.registrar(forPlugin: "QuillNativeBridgePlugin"))
2729
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
2830
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
2931
SuperNativeExtensionsPlugin.register(with: registry.registrar(forPlugin: "SuperNativeExtensionsPlugin"))

example/macos/Podfile.lock

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,17 @@ PODS:
55
- FlutterMacOS
66
- file_selector_macos (0.0.1):
77
- FlutterMacOS
8-
- flutter_inappwebview_macos (0.0.1):
9-
- FlutterMacOS
10-
- OrderedSet (~> 5.0)
118
- FlutterMacOS (1.0.0)
129
- gal (1.0.0):
1310
- Flutter
1411
- FlutterMacOS
1512
- irondash_engine_context (0.0.1):
1613
- FlutterMacOS
17-
- OrderedSet (5.0.0)
1814
- path_provider_foundation (0.0.1):
1915
- Flutter
2016
- FlutterMacOS
17+
- quill_native_bridge_macos (0.0.1):
18+
- FlutterMacOS
2119
- share_plus (0.0.1):
2220
- FlutterMacOS
2321
- sqflite (0.0.3):
@@ -35,30 +33,24 @@ DEPENDENCIES:
3533
- desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`)
3634
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
3735
- file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`)
38-
- flutter_inappwebview_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_inappwebview_macos/macos`)
3936
- FlutterMacOS (from `Flutter/ephemeral`)
4037
- gal (from `Flutter/ephemeral/.symlinks/plugins/gal/darwin`)
4138
- irondash_engine_context (from `Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos`)
4239
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
40+
- quill_native_bridge_macos (from `Flutter/ephemeral/.symlinks/plugins/quill_native_bridge_macos/macos`)
4341
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
4442
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`)
4543
- super_native_extensions (from `Flutter/ephemeral/.symlinks/plugins/super_native_extensions/macos`)
4644
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
4745
- video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`)
4846

49-
SPEC REPOS:
50-
trunk:
51-
- OrderedSet
52-
5347
EXTERNAL SOURCES:
5448
desktop_drop:
5549
:path: Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos
5650
device_info_plus:
5751
:path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos
5852
file_selector_macos:
5953
:path: Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos
60-
flutter_inappwebview_macos:
61-
:path: Flutter/ephemeral/.symlinks/plugins/flutter_inappwebview_macos/macos
6254
FlutterMacOS:
6355
:path: Flutter/ephemeral
6456
gal:
@@ -67,6 +59,8 @@ EXTERNAL SOURCES:
6759
:path: Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos
6860
path_provider_foundation:
6961
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
62+
quill_native_bridge_macos:
63+
:path: Flutter/ephemeral/.symlinks/plugins/quill_native_bridge_macos/macos
7064
share_plus:
7165
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
7266
sqflite:
@@ -82,12 +76,11 @@ SPEC CHECKSUMS:
8276
desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898
8377
device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720
8478
file_selector_macos: 54fdab7caa3ac3fc43c9fac4d7d8d231277f8cf2
85-
flutter_inappwebview_macos: 9600c9df9fdb346aaa8933812009f8d94304203d
8679
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
8780
gal: 61e868295d28fe67ffa297fae6dacebf56fd53e1
8881
irondash_engine_context: da62996ee25616d2f01bbeb85dc115d813359478
89-
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
9082
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
83+
quill_native_bridge_macos: f90985c5269ac7ba84d933605b463d96e5f544fe
9184
share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf
9285
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
9386
super_native_extensions: 85efee3a7495b46b04befcfc86ed12069264ebf3

example/pubspec.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ dependency_overrides:
5959
flutter_quill_test:
6060
path: ../flutter_quill_test
6161

62-
6362
dev_dependencies:
6463
flutter_test:
6564
sdk: flutter

flutter_quill_extensions/README.md

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@ The package uses the following plugins:
5050
platform-specific setup.
5151
2. [`image_picker`](https://pub.dev/packages/image_picker) for picking images.
5252
See the [Installation](https://pub.dev/packages/image_picker#installation) section.
53-
3. [`super_clipboard`](https://pub.dev/packages/super_clipboard) which needs some setup on Android only, it's used to
54-
support copying images and pasting them into editor, it's also required to support rich text pasting feature on
55-
non-web platforms, Open the [Android Support](https://pub.dev/packages/super_clipboard#android-support) page for
56-
instructions.
57-
The `minSdkVersion` for **Android** is `23` as `super_clipboard` requires it
5853

5954
### Loading Images from the Internet
6055

@@ -151,35 +146,8 @@ This works only for non-web platforms.
151146

152147
### 📝 Rich Text Paste Feature
153148

154-
The Rich Text Pasting feature requires native code to access
155-
the `Clipboard` data as HTML, the plugin `super_clipboard` is required on all platforms except Web.
156-
157-
This package already includes `super_clipboard` and will be used internally in this package, to use it
158-
in `flutter_quill`, call this function before using any of the widgets or functionalities:
159-
160-
```dart
161-
FlutterQuillExtensions.useSuperClipboardPlugin();
162-
```
163-
164-
`super_clipboard` is a comprehensive plugin that provides many clipboard features for reading and writing rich text,
165-
images and other formats.
166-
167-
Calling this function will allow `flutter_quill` to use modern rich text features to paste HTML and Markdown,
168-
support for GIF files, and other formats.
169-
170-
> [!IMPORTANT]
171-
> On web platforms, you can only get the HTML from `Clipboard` on the
172-
> `paste` event, `super_clipboard`, or any plugin is not required.
173-
> The paste feature will not work using the standard paste hotkey logic.
174-
> As such, you will be unable to use the **Rich Text Paste Feature** on a button or in the web app itself.
175-
> So you might want to either display a dialog when pressing the paste button that explains the limitation and shows the
176-
> hotkey they need to press in order to paste or develop an extension for the browser that bypasses this limitation
177-
> similarly to **Google Docs** and provide a link to install the browser extension.
178-
> See [Issue #1998](https://github.com/singerdmx/flutter-quill/issues/1998) for more details.
179-
180-
> [!NOTE]
181-
> We're still planning on how this should be implemented in
182-
> [Issue #1998](https://github.com/singerdmx/flutter-quill/issues/1998).
149+
The rich text paste feature is now supported directly in `flutter_quill`
150+
as platform code is not bundled with the project.
183151

184152
### 🖼️ Image Assets
185153

flutter_quill_extensions/lib/flutter_quill_extensions.dart

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
library;
22

3-
// ignore: implementation_imports
4-
import 'package:flutter_quill/src/editor_toolbar_controller_shared/clipboard/clipboard_service_provider.dart';
3+
import 'package:flutter_quill/flutter_quill_internal.dart'
4+
show ClipboardServiceProvider;
55
import 'package:meta/meta.dart' show experimental;
66

77
import 'src/editor_toolbar_controller_shared/clipboard/super_clipboard_service.dart';
@@ -64,8 +64,11 @@ class FlutterQuillExtensions {
6464
/// to allow `flutter_quill` package to use `super_clipboard` plugin
6565
/// to support rich text features, gif and images.
6666
@Deprecated(
67-
'Should not be used anymore as super_clipboard will moved outside of flutter_quill_extensions soon.\n'
68-
'A replacement is being made in https://github.com/singerdmx/flutter-quill/pull/2230',
67+
'The functionality of super_clipboard is now built-in in recent versions of flutter_quill.\n'
68+
'To migrate, remove this function call and see '
69+
'https://pub.dev/packages/quill_native_bridge#-platform-configuration (optional for copying images on Android) to use quill_native_bridge implementation (the new default).\n'
70+
'Or if you want to use super_clipboard implementation (support might discontinued in newer versions), use the package https://pub.dev/packages/quill_super_clipboard\n'
71+
'See https://github.com/singerdmx/flutter-quill/pull/2230 for more details.',
6972
)
7073
@experimental
7174
static void useSuperClipboardPlugin() {

0 commit comments

Comments
 (0)