* Update issue templates
* Updating checkbox to handle tap (#186)
* updating checkbox to handle tap
* updating checkbox to handle long press and using UniqueKey() to avoid weird side effects
* removed useless doc
Co-authored-by: Kevin Despoulains <kevin.despoulains@scriptandgo.com>
* Simple viewer (#187)
* 2021-04-25
* 2021-04-26
* Fix simple viewer compilation error
* Upgrade version - checkbox supports tapping
* 171: support for non-scrollable text editor (#188)
Co-authored-by: Gyuri Majercsik <gyuri@fluttech.com>
* custom rules & optionally auto add newline for image embeds (#205)
* Adding missing overrides to make package work with Flutter 2.2.0 (#226)
* Improve SOC of raw editor (#227)
Improve separation of concerns for RawEditor by moving the code
for the text input client to a separate class, furthermore add
more comments.
* Upgrade version
* Improve SOC of raw editor (#228)
Improve separation of concerns for `RawEditor` by moving the code
for the keyboard to a separate class, furthermore add more comments.
The PR does not change the functionality of the code.
* Improve further SOC of raw editor
This improves separation of concerns for the RawEditor by moving
the code for the text selection delegate to a separate class,
furthermore add more comments.
The PR does not change the functionality of the code.
* Hide implementation files (#233)
* Fixes for flutter web (#234)
* Fix for Attribute object comparison
* Fix for "Unexpected null value" error on web
Clipboard is now supported on web, via a permission request through the browser
Co-authored-by: George Johnson <george@indiespring.com>
* Dispose ValueNotifier of cursor controller
* Remove getter for final operator
A getter for a final variable makes no sense, because the variable
cannot be reassigned. It is better to remove the unnecessary getter
and make the variable public.
* Add comments to cursor class
* Remove null exception when a disposed controller is set
* Disallow lines longer than 80 characters
* Don't create a lambda when a tear-off will do
* Move ResponsiveWidgets to example folder
This widget has nothing to do with the library and is only used in
the example, so it is moved to the example.
* Fix null exception
* Remove exception when widget is not mounted
* Fix exception when rect is not a number
* Fix paste (#236)
closes#235.
* Fix exception
* Add const types for image and divider embeds
This allows to reference the type.
* Fix relative path
* Add new logo
* Fix buttons which ignore toolbariconsize
Closes#189.
* Upgrade to 1.3.1
* Fix incorrect double to int cast, and guard against optional parent (#239)
* use ceil instead of floor to make sure won't cause overflow
* Fix example project Podfile (#241)
* Show arrow indicator on toolbar (#245)
* Add color parameter to Toolbar and ImageButton
In addition, change these widgets to stateless widgets, since these
widgets do not have a state and thus stateful is superfluous.
* Fix paste bug
* Remove extraneous toolbar dividers in certain configuration
Closes#193.
* Upgrade version to 1.3.2
* Format code
* Bump file_picker to 3.0.2+2
With version 3.0.2 `name` of the file_picker library becomes
non-nullable, so a warning was issued for users who had already
used version 3.0.2, as we still assumed that `name` is nullable.
Increasing the version and removing the exclamation mark removes
the warning.
* Fix a bug that Embed could be together with Text (#249)
* Fix#242 (#254)
* Upgrade to 1.3.3
* Format code
* bugfix:The return type 'bool' isn't a 'KeyEventResult'
Co-authored-by: Xin Yao <singerdmx@gmail.com>
Co-authored-by: kevinDespoulains <46108869+kevinDespoulains@users.noreply.github.com>
Co-authored-by: Kevin Despoulains <kevin.despoulains@scriptandgo.com>
Co-authored-by: em6m6e <50019687+em6m6e@users.noreply.github.com>
Co-authored-by: Gyuri Majercsik <majercsik.gyuri@gmail.com>
Co-authored-by: Gyuri Majercsik <gyuri@fluttech.com>
Co-authored-by: hyouuu <hyouuu@gmail.com>
Co-authored-by: Till Friebe <friebetill@gmail.com>
Co-authored-by: George <george.a.johnson@btopenworld.com>
Co-authored-by: George Johnson <george@indiespring.com>
Co-authored-by: Ben Chung <1330575+yzxben@users.noreply.github.com>
Co-authored-by: lucasbstn <64323294+lucasbstn@users.noreply.github.com>
Declaring variables as final when possible is a good practice
because it helps avoid accidental reassignments and allows the
compiler to do optimizations.
* Upgrade upgradable packages
* Apply default null-safety migrations
* Remove hashnode as a dependency and localize its functionality to the package.
Maintenance was done long time ago hence no need to wait for the update
* Localize ui package to reduce maintenance burdens
* Replace universal html with dart:html
* Remove unnecessary checks
* Fix formatting
* Migrate app to null safety
* Enable methods to be nullable
* Fix non-nullable issue with node methods
* Cast as Node
* Use universal html
* Use universal html package to bring in the ImageElement class
* Remove unused imports
* Fix imports on the editor file
* Add key to quill editor
* Remove final from the GlobalKey
* Remove final on GlobalKey
* Remove custom util implementation in favor of quiver
* Fix issue with null on token attrivute
* Remove final hashcode that is replaced by quiver functionality
* Fix merge request
* Fix hit test position in text_line.dart
* Fix null safety errors on text_selection.dart
* Fix sound null safe errors in toolbar.dart
* Import null safe file picker
* Fix issue with basic text editing and editor display
* Fix issues with basic widget rendering and editing
* Upgrade upgradable packages
* Apply default null-safety migrations
* Remove hashnode as a dependency and localize its functionality to the package.
Maintenance was done long time ago hence no need to wait for the update
* Localize ui package to reduce maintenance burdens
* Replace universal html with dart:html
* Remove unnecessary checks
* Fix formatting
* Migrate app to null safety
* Enable methods to be nullable
* Fix non-nullable issue with node methods
* Cast as Node
* Use universal html
* Use universal html package to bring in the ImageElement class
* Remove unused imports
* Fix imports on the editor file
* Add key to quill editor
* Remove final from the GlobalKey
* Remove final on GlobalKey
* Remove custom util implementation in favor of quiver
* Fix issue with null on token attrivute
* Remove final hashcode that is replaced by quiver functionality
* Fix merge request
* Fix hit test position in text_line.dart
* Fix null safety errors on text_selection.dart
* Fix sound null safe errors in toolbar.dart
* Import null safe file picker
The code change allows to override the default behaviour of clicking on
images and thus solves #90.
Now the only thing left to do is to use a `RawGestureDetector` in the
`EmbedBuilder` to deactivate the "old" behaviour (by entering the
GestureArena and win). The `embedBuilder` could look like this:
```dart
Widget embedBuilder(BuildContext context, Embed node, bool readOnly) {
return FutureBuilder<File>(
future: File('image_path.png'),
builder: (context, snapshot) {
final gestures = {
ReadDependentGestureRecognizer: GestureRecognizerFactoryWithHandlers<
ReadDependentGestureRecognizer>(
() => ReadDependentGestureRecognizer(readOnly: readOnly),
(instance) => instance
..onTapUp = ((_) => print('Test'))
)
};
return RawGestureDetector(
gestures: gestures,
child: Image.file(snapshot.data),
);
}
);
}
class ReadDependentGestureRecognizer extends TapGestureRecognizer {
ReadDependentGestureRecognizer({@required this.readOnly});
final bool readOnly;
@override
bool isPointerAllowed(PointerDownEvent event) {
if (!readOnly) {
return false;
}
return super.isPointerAllowed(event);
}
}
```
**Explanation of the code:**
When a `PointerDownEvent` is received by the `GestureBinding` a hit
test is performed to determine which `HitTestTarget` nodes are affected.
For this the (I think) element tree is traversed downwards to find
out which elements has been hit. To find out which elements were
hit, the method `hitTestSelf` and `hitTestChildren` are used. Since
the `hitTestChildren` method of `TextLine` has not been implemented
yet, `false` was always returned, which is why the hit test
never arrived at the `embedBuilder`. With the code change, the hit is
passed on and can be processed correctly in the embed.
Additionally I removed the class `_TransparentTapGestureRecognizer`,
because this class always accepted the gesture, even if the recognizer
lost in the arena.