* 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>
Annotating types for function expression parameters is usually
unnecessary because the parameter types can almost always be
inferred from the context, thus making the practice redundant.
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
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.