diff --git a/CHANGELOG.md b/CHANGELOG.md index 61e2cf0f..667ea419 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [1.1.3] +* Update example folder. + ## [1.1.2] * Add pedantic. diff --git a/README.md b/README.md index cfdbd4f2..18172233 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,11 @@ The `QuillToolbar` class lets you customise which formatting options are availab ## Web -For web development, use `flutter config --enable-web` for flutter and use [ReactQuill] for React. +For web development, use `flutter config --enable-web` for flutter and use [ReactQuill] for React. + +## Migrate Zefyr Data + +Check out [code](https://github.com/jwehrle/zefyr_quill_convert) and [doc](https://docs.google.com/document/d/1FUSrpbarHnilb7uDN5J5DDahaI0v1RMXBjj4fFSpSuY/edit?usp=sharing). --- @@ -86,4 +90,4 @@ For web development, use `flutter config --enable-web` for flutter and use [Reac [FlutterQuill]: https://pub.dev/packages/flutter_quill [ReactQuill]: https://github.com/zenoamaro/react-quill [Slack Group]: https://join.slack.com/t/bulletjournal1024/shared_invite/zt-fys7t9hi-ITVU5PGDen1rNRyCjdcQ2g -[Sample Page]: https://github.com/singerdmx/flutter-quill/blob/master/app/lib/pages/home_page.dart +[Sample Page]: https://github.com/singerdmx/flutter-quill/blob/master/example/lib/pages/home_page.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 4679e597..57f3028e 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -4,4 +4,7 @@ analyzer: errors: undefined_prefixed_name: ignore omit_local_variable_types: ignore - unsafe_html: ignore \ No newline at end of file + unsafe_html: ignore +linter: + rules: + - avoid_print diff --git a/example/lib/pages/home_page.dart b/example/lib/pages/home_page.dart index f7299805..2e044fd7 100644 --- a/example/lib/pages/home_page.dart +++ b/example/lib/pages/home_page.dart @@ -79,12 +79,11 @@ class _HomePageState extends State { .getSelectionStyle() .attributes .keys - .contains("bold")) { + .contains('bold')) { _controller! .formatSelection(Attribute.clone(Attribute.bold, null)); } else { _controller!.formatSelection(Attribute.bold); - print("not bold"); } } }, diff --git a/example/lib/widgets/field.dart b/example/lib/widgets/field.dart index 35e710f2..5a6badfe 100644 --- a/example/lib/widgets/field.dart +++ b/example/lib/widgets/field.dart @@ -105,11 +105,11 @@ class _QuillFieldState extends State { children: [ child, Visibility( - child: widget.toolbar!, visible: _focused, maintainSize: true, maintainAnimation: true, maintainState: true, + child: widget.toolbar!, ), ], ); diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart index 4088468f..5029542e 100644 --- a/example/test/widget_test.dart +++ b/example/test/widget_test.dart @@ -7,10 +7,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; - -import '../lib/main.dart'; - -// import 'package:app/main.dart'; +import 'package:app/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { diff --git a/lib/models/rules/rule.dart b/lib/models/rules/rule.dart index da83797b..bff58b44 100644 --- a/lib/models/rules/rule.dart +++ b/lib/models/rules/rule.dart @@ -61,7 +61,6 @@ class Rules { final result = rule.apply(delta, index, len: len, data: data, attribute: attribute); if (result != null) { - print('Rule $rule applied'); return result..trim(); } } catch (e) { diff --git a/lib/widgets/controller.dart b/lib/widgets/controller.dart index d36a73b5..29206059 100644 --- a/lib/widgets/controller.dart +++ b/lib/widgets/controller.dart @@ -78,12 +78,7 @@ class QuillController extends ChangeNotifier { Delta? delta; if (len > 0 || data is! String || data.isNotEmpty) { - try { - delta = document.replace(index, len, data); - } catch (e) { - print('document.replace failed: $e'); - rethrow; - } + delta = document.replace(index, len, data); bool shouldRetainDelta = toggledStyle.isNotEmpty && delta.isNotEmpty && delta.length <= 2 && @@ -112,23 +107,18 @@ class QuillController extends ChangeNotifier { if (delta == null || delta.isEmpty) { _updateSelection(textSelection, ChangeSource.LOCAL); } else { - try { - Delta user = Delta() - ..retain(index) - ..insert(data) - ..delete(len); - int positionDelta = getPositionDelta(user, delta); - _updateSelection( - textSelection.copyWith( - baseOffset: textSelection.baseOffset + positionDelta, - extentOffset: textSelection.extentOffset + positionDelta, - ), - ChangeSource.LOCAL, - ); - } catch (e) { - print('getPositionDelta or getPositionDelta error: $e'); - rethrow; - } + Delta user = Delta() + ..retain(index) + ..insert(data) + ..delete(len); + int positionDelta = getPositionDelta(user, delta); + _updateSelection( + textSelection.copyWith( + baseOffset: textSelection.baseOffset + positionDelta, + extentOffset: textSelection.extentOffset + positionDelta, + ), + ChangeSource.LOCAL, + ); } } notifyListeners(); diff --git a/lib/widgets/toolbar.dart b/lib/widgets/toolbar.dart index 3a6a72b5..cb23a19e 100644 --- a/lib/widgets/toolbar.dart +++ b/lib/widgets/toolbar.dart @@ -4,7 +4,6 @@ import 'package:file_picker/file_picker.dart'; 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_colorpicker/flutter_colorpicker.dart'; import 'package:flutter_quill/models/documents/attribute.dart'; import 'package:flutter_quill/models/documents/nodes/embed.dart'; @@ -520,46 +519,25 @@ class _ImageButtonState extends State { final File file = File(pickedFile.path); - // We simply return the absolute path to selected file. - try { - String url = await widget.onImagePickCallback!(file); - print('Image uploaded and its url is $url'); - return url; - } catch (error) { - print('Upload image error $error'); - } - return null; + return widget.onImagePickCallback!(file); } Future _pickImageWeb() async { - try { - _paths = (await FilePicker.platform.pickFiles( - type: _pickingType, - allowMultiple: false, - allowedExtensions: (_extension?.isNotEmpty ?? false) - ? _extension?.replaceAll(' ', '').split(',') - : null, - )) - ?.files; - } on PlatformException catch (e) { - print('Unsupported operation' + e.toString()); - } catch (ex) { - print(ex); - } + _paths = (await FilePicker.platform.pickFiles( + type: _pickingType, + allowMultiple: false, + allowedExtensions: (_extension?.isNotEmpty ?? false) + ? _extension?.replaceAll(' ', '').split(',') + : null, + )) + ?.files; var _fileName = _paths != null ? _paths!.map((e) => e.name).toString() : '...'; if (_paths != null) { File file = File(_fileName); // We simply return the absolute path to selected file. - try { - String url = await widget.onImagePickCallback!(file); - print('Image uploaded and its url is $url'); - return url; - } catch (error) { - print('Upload image error $error'); - } - return null; + return widget.onImagePickCallback!(file); } else { // User canceled the picker } @@ -567,23 +545,16 @@ class _ImageButtonState extends State { } Future _pickImageDesktop() async { - try { - var filePath = await FilesystemPicker.open( - context: context, - rootDirectory: await getApplicationDocumentsDirectory(), - fsType: FilesystemType.file, - fileTileSelectMode: FileTileSelectMode.wholeTile, - ); - if (filePath != null && filePath.isEmpty) return ''; - - final File file = File(filePath!); - String url = await widget.onImagePickCallback!(file); - print('Image uploaded and its url is $url'); - return url; - } catch (error) { - print('Upload image error $error'); - } - return ''; + var filePath = await FilesystemPicker.open( + context: context, + rootDirectory: await getApplicationDocumentsDirectory(), + fsType: FilesystemType.file, + fileTileSelectMode: FileTileSelectMode.wholeTile, + ); + if (filePath != null && filePath.isEmpty) return ''; + + final File file = File(filePath!); + return widget.onImagePickCallback!(file); } @override diff --git a/pubspec.yaml b/pubspec.yaml index 3fe29f53..553ea465 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_quill -description: A rich text editor -version: 1.1.2 +description: A rich text editor supporting mobile and web +version: 1.1.3 #author: bulletjournal homepage: https://bulletjournal.us/home/index.html repository: https://github.com/singerdmx/flutter-quill