singerdmx / flutter-quill Goto Github PK
View Code? Open in Web Editor NEWRich text editor for Flutter
Home Page: https://1o24bbs.com/c/bulletjournal/108
License: MIT License
Rich text editor for Flutter
Home Page: https://1o24bbs.com/c/bulletjournal/108
License: MIT License
Hi, I've installed this plugin and I want to know two things:
Best regards, thank you.
Hi, im using flutter-quill
for a simple article reading app. I successfully render the quill delta on the flutter with the help of QuillEditor.basic()
or setting up the QuillEditor
via readOnly parameter.
But somehow, i figure that _getIndentWidth
on the EditableTextBlock
class always returning 32px left padding. This behaviour resulting in our app to have look like this.
Is there any way for me to override this behaviour? Or maybe you guys have a way to render the quill delta just for reading purpose?
Thanks.
Hi, I just want to get the first image link from the data that the user entered in quillEditor. My app stores images in device storage using the path provider package. I printed the data and got this insert⟨ {image: /data/user/0/com.example.notes/app_flutter/image_picker8603960138221828112.jpg} ⟩
but don't know how to get the first image link from this line. is there any idea?
Need to display the document (part say 5 to 6 lines) in listview. Basically want to show some glimpses of the document and then when user clicks on particular row, we will show the full document
Both handler at the front of the range. The right way is one at the front and another at the end.
Stack trace:
Launching lib/main-dev.dart on Google Pixel 3 in debug mode...
../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_quill-1.0.2/lib/widgets/raw_editor.dart:112:7: Error: The non-abstract class 'RawEditorState' is missing implementations for these members:
- TextSelectionDelegate.userUpdateTextEditingValue
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class RawEditorState extends EditorState
^^^^^^^^^^^^^^
../../../../flutter/packages/flutter/lib/src/services/text_input.dart:822:8: Context: 'TextSelectionDelegate.userUpdateTextEditingValue' is defined here.
void userUpdateTextEditingValue(TextEditingValue value, SelectionChangedCause cause);
^^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_quill-1.0.2/lib/widgets/raw_editor.dart:1019:8: Error: The method 'RawEditorState.hideToolbar' has fewer positional arguments than those of overridden method 'TextSelectionDelegate.hideToolbar'.
void hideToolbar() {
^
../../../../flutter/packages/flutter/lib/src/services/text_input.dart:829:8: Context: This is the overridden method ('hideToolbar').
void hideToolbar([bool hideHandles = true]);
^
FAILURE: Build failed with an exception.
* Where:
Script '/home/mehrdad/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1029
* What went wrong:
Execution failed for task ':app:compileFlutterBuildDevDebug'.
> Process 'command '/home/mehrdad/flutter/bin/flutter'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1m 45s
pubspec.yml
flutter_quill: ^1.0.2
flutter doctor
▶ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 2.1.0-11.0.pre.145, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0-rc2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 3.6)
[✓] IntelliJ IDEA Ultimate Edition (version 2020.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2020.2)
[✓] VS Code (version 1.54.1)
[✓] Connected device (2 available)
• No issues found!
In the new 0.3.1 release, unfortunately, the view always jumps up. Probably it scrolls to the bottom every time a letter is entered. This brings a constant scrolling effect.
I think it has to do with the following commit: 471c1cb
In version 0.3.0 the problem does not occur and therefore I went back to this release. So no stress.
My requirement is when user tap enter then auto insert two space. and my code as follows.
when I auto insert space, I expect cursor appear after space but now it appear before space
May be my code is wrong. please give me some suggestion Thank you.
I wish you can provide more examples.
@OverRide
void initState() {
this._controller.addListener(() {
this._controller.changes.first.then((value) {
if (value.item2.length >= 2 &&
value.item2[1].isInsert &&
value.item2[1].data == "\n") {
final index = this._controller.selection.baseOffset;
this._controller.document.insert(index, " ");
}
});
});
}
What does onLaunchUrl
do? How can I launch URL form the editor?
Hello,
I really like this package, it looks promising. I only have one question:
is there an Html converter? what if we want to get or load html content in editor?
Thanks.
It would be great to support desktop platform.
I am trying to build an article app and I need to save the data inputted to firebase or any server then retrieve it back. How can this be done?
Is it possible to create an attributeBuilder method that works just like embedBuilder? I have the code below, but I can't customize the view
{ "attributes": { "list": "checked" }, "insert": "\n" }, { "attributes": { "list": "unchecked" }, "insert": "\n" }
Hi there,
first of all - a really great plugin!!
Since version 0.3.1 Text is not displayed while typing on web - only when I change the browser window size (which I guess initiates a set state).
This issue is also in the new 1.0.2 version
Steps to reproduce:
Expected result: The editor must insert a new line.
Actual result: nothing happened.
As mentioned here, I would like to try and submit a PR to enable web support for this plugin
I just created a new project using the example from the package in the latest master (1.27.0-5.0.pre.92
) and latest version (flutter_quill: ^0.2.12
) but I'm getting the following errors (same errors in both iOS and Web):
../../.pub-cache/hosted/pub.dartlang.org/flutter_quill-0.2.12/lib/widgets/raw_editor.dart:110:7: Error: The non-abstract class 'RawEditorState' is missing implementations for these members:
- TextSelectionDelegate.userUpdateTextEditingValue
Try to either
- provide an implementation,
- inherit an implementation from a superclass or mixin,
- mark the class as abstract, or
- provide a 'noSuchMethod' implementation.
class RawEditorState extends EditorState
^^^^^^^^^^^^^^
../../fvm/versions/master/packages/flutter/lib/src/services/text_input.dart:822:8: Context: 'TextSelectionDelegate.userUpdateTextEditingValue' is defined here.
void userUpdateTextEditingValue(TextEditingValue value, SelectionChangedCause cause);
^^^^^^^^^^^^^^^^^^^^^^^^^^
../../.pub-cache/hosted/pub.dartlang.org/flutter_quill-0.2.12/lib/widgets/text_selection.dart:201:43: Error: Too few positional arguments: 8 required, 7 given.
child: selectionCtrls.buildToolbar(
^
../../.pub-cache/hosted/pub.dartlang.org/flutter_quill-0.2.12/lib/widgets/text_line.dart:63:41: Error: No named parameter with the name 'nullOk'.
Localizations.localeOf(context, nullOk: true),
^^^^^^
../../fvm/versions/master/packages/flutter/lib/src/widgets/localizations.dart:413:17: Context: Found this candidate, but the arguments don't match.
static Locale localeOf(BuildContext context) {
^^^^^^^^
Failed to compile application.
Exited (sigterm)
I believe the nullOk error is related to this issue in flutter repo:
flutter/flutter#74519
I am currently experiencing issues with the quill editor on Flutter 2.0. If I use the basic QuillEditor example from https://github.com/singerdmx/flutter-quill/blob/master/example/main.dart I can only type a few letters before the editor freezes. Unfortunately there are no console logs out of the ordinary I could post here, the editor just becomes unresponsive.
To reproduce the issues I am experiencing just run the example code (https://github.com/singerdmx/flutter-quill/blob/master/example/main.dart) in Flutter 2.0 on Chrome.
Flutter Doctor output:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.0, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] IntelliJ IDEA Community Edition (version 2020.3)
[✓] Connected device (1 available)
I am porting my app from Zeyfr Editor to this wonderful plugin and I am stuck with a couple of problems.
1] How can I add custom styles to the text. I looked at QuillStyles()
but didn't understand anything.
2] Whenever I open Notus document files (created by Zeyfr) with your package, it shows an error :
Invalid argument (key "heading" not found.): "heading".
Any idea how to fix it?
3] How can I embed images from device storage? My current implementation (not working) is this :
Future<String> uploadImageCallBack(File file) async {
if (file == null) return null;
return file.path;
}
Again Thank you for this wonderful package.
Expect to be:
Press arrow right/left once, move cursor once.
Actually:
Press keyboard right/left arrow once will move cursor twice.
Hello! I'm using your plugin on web and I found some bug.
v.0.2.2 (last for now).
The newline character takes a lot of space and fills the entire screen pretty quickly.
In my opinion it should take as much space as the normal line in a paragraph does.
Right now it is taking twice as much.
I found another Bug in Flutter-quill.
This is the error message:
I/flutter (32301): ══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (32301): The following NoSuchMethodError was thrown during a scheduler callback:
I/flutter (32301): The method 'findRenderObject' was called on null.
I/flutter (32301): Receiver: null
I/flutter (32301): Tried calling: findRenderObject()
I/flutter (32301):
I/flutter (32301): When the exception was thrown, this was the stack:
I/flutter (32301): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
I/flutter (32301): #1 RawEditorState.getRenderEditor (package:flutter_quill/widgets/raw_editor.dart:1001:38)
I/flutter (32301): #2 RawEditorState._showCaretOnScreen.<anonymous closure> (package:flutter_quill/widgets/raw_editor.dart:977:50)
I/flutter (32301): #3 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
I/flutter (32301): #4 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1090:9)
I/flutter (32301): #5 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:998:5)
I/flutter (32301): #9 _invoke (dart:ui/hooks.dart:161:10)
I/flutter (32301): #10 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:253:5)
I/flutter (32301): #11 _drawFrame (dart:ui/hooks.dart:120:31)
I/flutter (32301): (elided 3 frames from dart:async)
I'm not quite sure why this happens - maybe nullsafety (just a guess)? I'm on Flutter Channel beta, 2.0.0, on macOS 11.2.1 20D74 darwin-arm, locale de-DE.
Hello!
Can I change the default keyboard type that Flutter Quill is using? It's current one seems quite strange.
The default keyboard doesn't seem to understand the language I'm typing in. In general, I'd expect to see auto-correction etc. as one does when types in a box.
In a Flutter textfield, I can specify a keyboard type to use with keyboardType: TextInputType.text,
.
Searching this repo, I don't even find the word "keyboard".
Any advice appreciated!
Hello, currently I'm working on text editor which requires an option to change font and font-size.
According to this
QuillJs official doc
it supports "size" and "font".
do flutter-quill support that?
Hi ! I'm hoping this issue can be used to follow updates on nullsafety. Currently, there are still several dependencies that are not migrated and might be considered blocking.
dart pub outdated --mode=null-safety
Showing dependencies that are currently not opted in to null-safety.
[✗] indicates versions without null safety support.
[✓] indicates versions opting in to null safety.
Package Name Current Upgradable Resolvable Latest
direct dependencies:
file_picker ✗2.1.6 ✗2.1.6 ✓3.0.0-nullsafety.2 ✓3.0.0-nullsafety.2
flutter_colorpicker ✗0.3.5 ✗0.3.5 ✓0.4.0-nullsafety.0 ✓0.4.0-nullsafety.0
flutter_keyboard_visibility ✗4.0.4 ✗4.0.4 ✓5.0.0-nullsafety.2 ✓5.0.0-nullsafety.2
image_picker ✗0.6.7+22 ✗0.6.7+22 ✓0.7.0 ✓0.7.0
photo_view ✗0.10.3 ✗0.10.3 ✗0.10.3 ✗0.10.3
quill_delta ✗2.0.0 ✗2.0.0 ✗2.0.0 ✗2.0.0
quiver_hashcode ✗2.0.0 ✗2.0.0 ✗2.0.0 ✗2.0.0
string_validator ✗0.1.4 ✗0.1.4 ✓0.2.0-nullsafety.0 ✓0.2.0-nullsafety.0
tuple ✗1.0.3 ✗1.0.3 ✓2.0.0-nullsafety.0 ✓2.0.0-nullsafety.0
universal_html ✗1.2.4 ✗1.2.4 ✗1.2.4 ✗1.2.4
url_launcher ✗5.7.10 ✗5.7.10 ✓6.0.0 ✓6.0.0
7 dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `dart pub upgrade --null-safety`.
quill_delta
has a active pull request for null safety here. photo_view
also has an active pr for null safety. As for quiver_hashcode, here is a comment that says people should instead rely on quiver
instead which is already migrated to null safety. This just leaves universal_html
without an active PR.
With quill_delta removed that leaves just:
Can we add Custom Attributes without editing the source? custom Attribute does not necessarily mean that it is a styling attribute. it can be a non-styling attribute as well.
This is not an issue. Just a doubt. I just store data from quill editor as json in sqflite database and retrieve it, show it in Text widget. But what happens, it shows unknown characters when image or something stored in data. when extracted through toPlainText() method.
So how to get only text which typed not any customizations. Thanks
Hello sir
I When
flutter_quill: ^1.0.5
I use with
dio: ^3.0.10
validators: ^2.0.1
It is inconsistent and I have a lot of problems, please solve it
Because flutter_quill >=1.0.1 depends on image_picker ^0.7.2 which depends on image_picker_platform_interface ^2.0.0, flutter_quill >=1.0.1 requires image_picker_platform_interface ^2.0.0.
And because image_picker_platform_interface >=2.0.0 depends on http ^0.13.0 which depends on http_parser ^4.0.0, flutter_quill >=1.0.1 requires http_parser ^4.0.0.
And because dio 3.0.10 depends on http_parser >=0.0.1 <4.0.0 and no versions of dio match >3.0.10 <4.0.0, flutter_quill >=1.0.1 is incompatible with dio ^3.0.10.
So, because myapp depends on both dio ^3.0.10 and flutter_quill ^1.0.5, version solving failed.
pub get failed (1; So, because myapp depends on both dio ^3.0.10 and flutter_quill ^1.0.5, version solving failed.)
This is a big problem for me, please help me as soon as possible
Thanks
please add alignment and direction support for this great package
Please remove the check for the correctness of the link when you click on it.
This check can and should be done in the onLaunchUrl handler
Hi, @singerdmx I am a user from Zefyr package. I saw you actively answering the question there. Thank you, your answer helps me too. Since the Zefyr is not maintaining now.... ( is at dev 2.0) for a while... Initially, flutter-quill is not supporting the web, only on a mobile. Now it does🎉, I saw the tag under the package name and I am really glad to see that. I am wondering how does the package work on the web currently? Is it still in an early phase or it has all the basic functions working on the web as in mobile? Thanks again for the great package.👍
I found a bug when using QuillEditor inside a Stepper-Widget.
I also have a suggestion for fixing: After adding if (!mounted) return;
before setState()
inside raw_editor.dart
in line 904 & 960 the issue did not come up again.
Here is the error message:
E/flutter (24393): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: setState() called after dispose(): RawEditorState#669f3(lifecycle state: defunct, not mounted, tickers: tracking 0 tickers) E/flutter (24393): This error happens if you call setState() on a State object for a widget that no longer appears in the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error can occur when code calls setState() from a timer or an animation callback. E/flutter (24393): The preferred solution is to cancel the timer or stop listening to the animation in the dispose() callback. Another solution is to check the "mounted" property of this object before calling setState() to ensure the object is still in the tree. E/flutter (24393): This error might indicate a memory leak if setState() is being called because another object is retaining a reference to this State object after it has been removed from the tree. To avoid memory leaks, consider breaking the reference to this object during dispose(). E/flutter (24393): #0 State.setState.<anonymous closure> (package:flutter/src/widgets/framework.dart:1231:9) E/flutter (24393): #1 State.setState (package:flutter/src/widgets/framework.dart:1266:6) E/flutter (24393): #2 RawEditorState._onChangeTextEditingValue (package:flutter_quill/widgets/raw_editor.dart:905:5) E/flutter (24393): #3 RawEditorState.initState.<anonymous closure> (package:flutter_quill/widgets/raw_editor.dart:704:9) E/flutter (24393): #4 _rootRunUnary (dart:async/zone.dart:1362:47) E/flutter (24393): #5 _CustomZone.runUnary (dart:async/zone.dart:1265:19) E/flutter (24393): #6 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7) E/flutter (24393): #7 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11) E/flutter (24393): #8 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:271:7) E/flutter (24393): #9 _SyncBroadcastStreamController._sendData (dart:async/broadcast_stream_controller.dart:378:25) E/flutter (24393): #10 _BroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:244:5) E/flutter (24393): #11 _AsBroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:475:11) E/flutter (24393): #12 _rootRunUnary (dart:async/zone.dart:1362:47) E/flutter (24393): #13 _CustomZone.runUnary (dart:async/zone.dart:1265:19) E/flutter (24393): #14 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7) E/flutter (24393): #15 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341:11) E/flutter (24393): #16 _DelayedData.perform (dart:async/stream_impl.dart:591:14) E/flutter (24393): #17 _StreamImplEvents.handleNext (dart:async/stream_impl.dart:706:11) E/flutter (24393): #18 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:663:7) E/flutter (24393): #19 _rootRun (dart:async/zone.dart:1346:47) E/flutter (24393): #20 _CustomZone.run (dart:async/zone.dart:1258:19) E/flutter (24393): #21 _CustomZone.runGuarded (dart:async/zone.dart:1162:7) E/flutter (24393): #22 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1202:23) E/flutter (24393): #23 _rootRun (dart:async/zone.dart:1354:13) E/flutter (24393): #24 _CustomZone.run (dart:async/zone.dart:1258:19) E/flutter (24393): #25 _CustomZone.runGuarded (dart:async/zone.dart:1162:7) E/flutter (24393): #26 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1202:23) E/flutter (24393): #27 _microtaskLoop (dart:async/schedule_microtask.dart:40:21) E/flutter (24393): #28 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
Hi, @singerdmx I give it a quick test and found some problems.
Above are some problems I encounter after testing on the web application. Thank you for the hard work and make the package better!
Ken
There are 3 areas where the UX of editor can be improved :
When checking / unchecking the checkboxes, the text line moves up / down.
Keyboard pops when clicking the heading dropdown button unnecessarily.
Tab button doesn't moves the text to the far right end and stops mid-way.
What's the best way to get the exact value from QuillEditor then save to firebase or something?
And also, how to display the exact value back from Firebase or some sort of backend?
I am using _controller.document.toPlainText(); and saving only simple string
When I click the image rendered on the editor, it shows a broken image icon.
使用push和pop二次(以及多次)打开编辑器后,会报错,_keyboardVisibilityController.onChange.listen
回调会被调用多次,被调用的次数和编辑器打开的次数一致,在dispose中释放掉监听报错消失。
报错:
[VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: setState() called after dispose(): RawEditorState#c3ee0(lifecycle state: defunct, not mounted, tickers: tracking 0 tickers)
This error happens if you call setState() on a State object for a widget that no longer appears in the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error can occur when code calls setState() from a timer or an animation callback.
The preferred solution is to cancel the timer or stop listening to the animation in the dispose() callback. Another solution is to check the "mounted" property of this object before calling setState() to ensure the object is still in the tree.
This error might indicate a memory leak if setState() is being called because another object is retaining a reference to this State object after it has been removed from the tree. To avoid memory leaks, consider breaking the reference to this object during dispose().
#0 State.setState.<anonymous closure>
package:flutter/…/widgets/framework.dart:1208
#1 State.setState
package:flutter/…/widgets/framework.dart:1243
#2 RawEditorState._onChangeTextEditingValue
package:flutter_quill/widgets/raw_editor.dart:910
#3 RawEditorState.initState.<anonymous closure>
package:flutter_quill/widgets/raw_editor.dart:708
#4 _rootRunUnary (dart:async/zone.dart:1198:47)
改动:lib/widgets/raw_deitor.dart
StreamSubscription<bool> _keyboardVisibilitySubscription;
//initState()中
_keyboardVisibilityController = KeyboardVisibilityController();
_keyboardVisibilitySubscription =
_keyboardVisibilityController.onChange.listen((bool visible) {
_keyboardVisible = visible;
if (visible) {
_onChangeTextEditingValue();
}
});
@override
void dispose() {
closeConnectionIfNeeded();
_keyboardVisibilitySubscription.cancel();
....
This Library converts Zeyfr documents to HTML.
There are many plugins that can help with the conversion of HTML to markdown. I was thinking that with some tweaking we can create our own converter too.
Or we can take another approach, we can first convert Delta to markdown like here and then to HTML.
Again, this requires just some minor tweaking.
Operation next([num length = double.infinity]) {
assert(length != null);
if (_modificationCount != delta._modificationCount) {
throw ConcurrentModificationError(delta);
}
if (_index < delta.length) {
final op = delta.elementAt(_index);
final opKey = op.key;
final opAttributes = op.attributes;
final _currentOffset = _offset;
final actualLength = math.min(op.length - _currentOffset, length);
if (actualLength == op.length - _currentOffset) {
_index++;
_offset = 0;
} else {
_offset += actualLength;
}
final opData = op.isInsert && op.data is String
? (op.data as String)
.substring(_currentOffset, _currentOffset + actualLength)
: op.data;
final opIsNotEmpty =
opData is String ? opData.isNotEmpty : true; // embeds are never empty
final opLength = opData is String ? opData.length : 1;
final int opActualLength = opIsNotEmpty ? opLength : actualLength;
return Operation._(opKey, opActualLength, opData, opAttributes);
}
return Operation.retain(length);
}
next([num length = double.infinity])
length default is a double
but Operation.retain
need a int
And assert(length != null);
is useless
hello, I don't know how to set placeholder, I don't find document and properties about it
What is the best way to get (and then later set again) the current position the user has scrolled to? I have very long texts in my app and when the user starts reading, then closes the app and reopens it later again, the app should have "remembered" the reading progress and automatically scroll to the last position.
So in other words I need something like an index of the current visible part of the text.
Such a thing as the scroll position in pixels is not sufficient, because this would only be correct again on the same device, but e.g. wrong on the other devices of the user (the reading progress will be saved in the cloud in order to allow seamless reading across multiple devices).
An answer would be highly appreciated.
In the flutter quill for web, this issue appears. However the new line gets appended. Cursor remains in the same position.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.