A Flutter widget to use Apache ECharts (incubating) in a reactive way.

Overview

中文

[![pub](https://img.shields.io/pub/v/flutter_echarts.svg)](https://pub.dev/packages/flutter_echarts)

A Flutter widget to use Apache ECharts in a reactive way.

bar boxplot effectScatter funnel gague geo graph heatmap kline line liquid map parallel pie radar scatter wordCloud bar3D line3D sankey scatter3D surface3D themeRiver overlap

Features

Note:

  • Null safety is supported now.
  • With Echarts 5 inside.
  • Since based on webview, only mobile(Android, iOS) is supported.
  • There May be some unstability with some widgets and Echarts extensions.

Reactive Updating

The most exciting feature of Flutter widgets and React components is that the view can update reactively when data changes. Thanks to ECharts' data driven architecture, flutter_echarts implements a reactive way to connect charts with data. The charts automatically re-render when data in the option property changes.

Two Way Communication

The onMessage and extraScript properties provide a way to set two-way event communication between Flutter and JavaScript.

Configurable Extensions

ECharts has a lot of extensions. The extensions property allows you to inject the extension scripts as raw strings. In this way, you can copy these scripts to your source code without being confusing by assets dirs.

Installing

Add this to your package's pubspec.yaml file:

dependencies:
  flutter_echarts: #latest version

Now in your Dart code, you can use:

import 'package:flutter_echarts/flutter_echarts.dart';  

Details see pub.dev.

Usage

The flutter_echarts package itself is very simple to use, just like a common statelessWidget:

Details about the option object is in the Echarts docs or Echarts examples.

Container(
  child: Echarts(
  option: '''
    {
      xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
      },
      yAxis: {
        type: 'value'
      },
      series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
      }]
    }
  ''',
  ),
  width: 300,
  height: 250,
)

See the full flutter_echarts_example.

Widget Properties

option

String

( required )

ECharts is mainly configured by passing a string value to the JavaScript option property.

You can use jsonEncode() function in dart:convert to convert data in Dart object form:

source: ${jsonEncode(_data1)},

Because JavaScript don't have ''', you can use this operator to reduce some escape operators for quotas:

Echarts(
  option: '''
  
    // option string
    
  ''',
),

To use images in option properties, we suggest the Base64 Data URL :

image: 'data:image/png;base64,iVBORw0KG...',

extraScript

String

JavaScript which will execute after the Echarts.init() and before any chart.setOption(). The widget has a Javascript channel named Messager, so you can use this identifier to send messages from JavaScript to Flutter:

extraScript: '''
  chart.on('click', (params) => {
    if(params.componentType === 'series') {
        Messager.postMessage('anything');
    }
  });
''',

onMessage

void Function(String)

Function to handle the message sent by Messager.postMessage() in extraScript .

extensions

List<String>

List of strings are from Echarts extensions, such as themes, components, WebGL, and languages. You can download them from the official ECharts extension list. Insert extensions as raw strings:

const liquidPlugin = r'''

  // copy from liquid.min.js

''';

theme

String

You can download built-in ECharts themes or build your own custom themes with the ECharts theme builder. Copy the theme script into the extensions param and register the theme name with this param.

captureAllGestures

bool

( default: false )

Setting captureAllGestures to true is useful when handling 3D rotation and data zoom bars. Note that setting prevents containers like ListViews from reacting to gestures on the charts.

If true, captureHorizontalGestures and captureVerticalGestures are forced true.

captureHorizontalGestures

bool

( default: false )

Only capture horizontal gestures.

captureVerticalGestures

bool

( default: false )

Only capture vertical gestures.

onLoad

void Function()

The callback when first time the chart is loaded and rendered.

Blog

Reactive Echarts Flutter Widget

A performance optimization of Flutter WebView


If you have any suggestions or requests, please open an issue.

The gallery GIF is from chenjiandongx

Comments
  • Ugrade webview_flutter to 1.0.7 for better ios error detection

    Ugrade webview_flutter to 1.0.7 for better ios error detection

    As previously mentioned in some tickets I have some buggy behaviour when loading webviews, and thus flutter_echarts in IOS. It seems to happen more often if there's multiple webviews, the view will be loaded blank. Refreshing helps, it seems like a 'chance' for things to go wrong.

    Think its related to limitations in the flutter engine and IOS which are mentioned in this issue A workaround has been implemented in the webview plugin as of 1.0.7 here

    If we upgrade to the new version we should be able to implement the workaround to detect and handle issues for ios with WebView.onWebResourceError

    Might be able to work on this issue this or next week, not sure yet if we should autoreload the webview if it was terminated, or let the user handle this with a callback parameter

    opened by RickVM 8
  • Null passed to loadUrl function causes failed assertion 'url != null': is not true

    Null passed to loadUrl function causes failed assertion 'url != null': is not true

    When the EChart widget is disposed (e.g. because the current screen is being popped), the following error is thrown:

    E/flutter (10195): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: 'package:webview_flutter/webview_flutter.dart': Failed assertion: line 546 pos 12: 'url != null': is not true. E/flutter (10195): #0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:42:39) E/flutter (10195): #1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:38:5) E/flutter (10195): #2 WebViewController.loadUrl package:webview_flutter/webview_flutter.dart:546 E/flutter (10195): #3 _EchartsState.dispose

    This error is thrown because the loadUrl function does not accept null as an argument:

    Future<void> loadUrl( String url, { Map<String, String> headers, }) async { **assert(url != null);** _validateUrlString(url); return _webViewPlatformController.loadUrl(url, headers); }

    But null is passed to it here:

    // --- FIX_IOS_LEAK --- @override void dispose() { super.dispose(); _controller.loadUrl(null).then((_) { _controller.clearCache(); }); } // --- FIX_IOS_LEAK ---

    opened by hnnngwdlch 8
  • Does this support the method

    Does this support the method "dispatchAction"

    i have add a method dispatchaction like this extraScript: ''' chart.dispatchAction({ type:'highlight', seriesIndex: 1, dataIndex: 0 }); ''', but this chart is not any display

    opened by lyyb2001 8
  • flutter_echarts1.2.0 在iphone6 plus上不显示,错误提示:chart.setOption is not a function

    flutter_echarts1.2.0 在iphone6 plus上不显示,错误提示:chart.setOption is not a function

    Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=TypeError: chart.setOption is not a function. (In 'chart.setOption', 'chart.setOption' is undefined), WKJavaScriptExceptionSourceURL=data:text/html;base64,ICAgIDwhRE9DVFlQRSBodG1sPgogICAgPGh0bWw+CiAgICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij ... PgogIA==, NSLocalizedDescription=A JavaScript exception occurred, WKJavaScriptExceptionColumnNumber=22}) 0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7) 1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33) 2 MethodChannelWebViewPlatform.evaluateJavascript (package:webview_flutter/src/webview_method_channel.dart:95:21) 3 WebViewController.evaluateJavascript (package:webview_flutter/webview_flutter.dart:655:39) 4 _EchartsState.init (package:flutter_echarts/flutter_echarts.dart:112:24) 5 _EchartsState.echartWidget. (package:flutter_echarts/flutter_echarts.dart:141:9) 6 _PlatformCallbacksHandler.onPageFinished (package:webview_flutter/webview_flutter.dart:481:15) 7 MethodChannelWebViewPlatform._onMethodCall (package:webview_flutter/src/webview_method_channel.dart:41:35) 8 MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:402:55) 9 MethodChannel.setMethodCallHandler. (package:flutter/src/services/platform_channel.dart:370:54) 10 _DefaultBinaryMessenger.handlePlatformMessage (package:flutter/src/services/binding.dart:200:33) 11 _invoke3. (dart:ui/hooks.dart:303:15) 12 _rootRun (dart:async/zone.dart:1126:13) 13 _CustomZone.run (dart:async/zone.dart:1023:19) 14 _CustomZone.runGuarded (dart:async/zone.dart:925:7) 15 _invoke3 (dart:ui/hooks.dart:302:10) 16 _dispatchPlatformMessage (dart:ui/hooks.dart:162:5)

    opened by fengbo102 7
  • Warning: Operand of null-aware operation '??'

    Warning: Operand of null-aware operation '??'

    I had some warning msg on 2.0.0 version

    Warning: Operand of null-aware operation '??' has type 'String' which excludes null.
            (value, element) => (value ?? '') + '\n' + (element ?? '')
    
    opened by JAICHANGPARK 6
  • 严重错误   在Sliver 中 添加多个图表 利用 Swiper 进行划分   进行滑动 会出现闪退

    严重错误 在Sliver 中 添加多个图表 利用 Swiper 进行划分 进行滑动 会出现闪退

    0 Flutter | flutter::FlutterPlatformViewsController::CompositeEmbeddedView(int) + 1964 -- | -- 1 Flutter | flutter::FlutterPlatformViewsController::CompositeEmbeddedView(int) + 1960 2 Flutter | flutter::IOSSurfaceGL::CompositeEmbeddedView(int) + 80 3 Flutter | flutter::PlatformViewLayer::Paint(flutter::Layer::PaintContext&) const + 48 4 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 5 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 6 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 7 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 8 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 9 Flutter | flutter::ClipRectLayer::Paint(flutter::Layer::PaintContext&) const + 208 10 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 11 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 12 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 13 Flutter | flutter::ClipRectLayer::Paint(flutter::Layer::PaintContext&) const + 208 14 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 15 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 16 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 17 Flutter | flutter::ClipRectLayer::Paint(flutter::Layer::PaintContext&) const + 208 18 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 19 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 20 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 21 Flutter | flutter::PhysicalShapeLayer::Paint(flutter::Layer::PaintContext&) const + 432 22 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 23 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 24 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 25 Flutter | flutter::ClipRectLayer::Paint(flutter::Layer::PaintContext&) const + 208 26 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 27 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 28 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 29 Flutter | flutter::ClipRectLayer::Paint(flutter::Layer::PaintContext&) const + 208 30 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 31 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 32 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 33 Flutter | flutter::PhysicalShapeLayer::Paint(flutter::Layer::PaintContext&) const + 432 34 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 35 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 36 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 37 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 38 Flutter | flutter::ContainerLayer::PaintChildren(flutter::Layer::PaintContext&) const + 88 39 Flutter | flutter::TransformLayer::Paint(flutter::Layer::PaintContext&) const + 136 40 Flutter | flutter::CompositorContext::ScopedFrame::Raster(flutter::LayerTree&, bool) + 808 41 Flutter | flutter::Rasterizer::DrawToSurface(flutter::LayerTree&) + 456 42 Flutter | _ZNSt3__110__function6__funcIZN7flutter10Rasterizer4DrawEN3fml6RefPtrINS2_8PipelineINS2_9LayerTreeEEEEEE3$0NS_9allocatorISA_EEFvNS_10unique_ptrIS7_NS_14default_deleteIS7_EEEEEEclEOSG + 104 43 Flutter | flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipelineflutter::LayerTree >) + 476 44 Flutter | _ZNSt3__110__function6__funcIZN7flutter5Shell14OnAnimatorDrawEN3fml6RefPtrINS2_8PipelineINS2_9LayerTreeEEEEEE4$_28NS_9allocatorISA_EEFvvEEclEv + 76 45 Flutter | fml::MessageLoopImpl::FlushTasks(fml::FlushType) + 132 46 Flutter | fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*) + 32 47 CoreFoundation | _CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION + 28 48 CoreFoundation | ___CFRunLoopDoTimer + 880 49 CoreFoundation | ___CFRunLoopDoTimers + 276 50 CoreFoundation | ___CFRunLoopRun + 1640 51 CoreFoundation | CFRunLoopRunSpecific + 424 52 GraphicsServices | GSEventRunModal + 160 53 UIKitCore | UIApplicationMain + 1932

    opened by sanrixue 6
  • The background color before display.

    The background color before display.

    Though I set the background color, background color before display is white on a tick. If my app background is no white, even is black, it will be disharmony.

    尽管设置了背景颜色,但在视图显示之前,会有一瞬间的白色。如果我的APP背景颜色不是白色,甚至是黑色,将导致严重的色差冲突。

    opened by blackredscarf 6
  • Chart doesn't redraw in realtime if inside a scrollable widget

    Chart doesn't redraw in realtime if inside a scrollable widget

    Hello there, first of all, amazing library :)

    Whenever I add a chart to some scrollable widget, like SingleChildScrollView the chart stops being "realtime" responsive.

    For example, if I have a candlestick chart (like this one https://www.echartsjs.com/examples/en/editor.html?c=candlestick-touch ) and want to move the chart data, it will not redraw the chart in realtime, it will only redraw after I release the click.

    The chart works as expected if I insert it not inside a scrollable widget.

    opened by sezaru 6
  • expose webview onWebResourceError callback

    expose webview onWebResourceError callback

    try resolve https://github.com/entronad/flutter_echarts/issues/129 properly

    Is there a way to catch the Exception and call reload() for the webview render properly?

    The blank issue may related to https://github.com/flutter/flutter/issues/61795

    I think this issue is because of a more general issue with the design of the framework itself. When the state of a widget changes, flutter doesn't change the widget, but discards it and makes a new one. This is fine for lightweight text widgets and such, but for webviews it means creating and destroying a webview every time the page is scrolled potentially.

    I am using flutter_echarts plugin in my project, and facing blank issue too. It happen only on ios in practice(but may due to ios webview is resource heavy; more webview/echarts in a screen may increase the error rate) For plugin side, currently best work-around maybe expose a callback when error for users to reload.

    opened by lisuizhe 5
  • [iOS] setting reloadAfterInit to true still has error and white area

    [iOS] setting reloadAfterInit to true still has error and white area

    In iOS, sometimes this error appears after first render:

    [VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: PlatformException(evaluateJavaScript_failed, Failed evaluating JavaScript, JavaScript string was: '      !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).echarts={})}(this,function(t){"use strict";var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function l(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var h=function(){return(h=Object.assign||function(t){for(var e,n=1,i=arguments.length;n<i;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function a(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;for(var i=Array(t),o=0,e=0;e<n;e++)for(var r=arguments[e],a=<…>
    

    and the widget is blank (white space.

    However, calling reload() on WebViewController again the chart will show. Can you please help me out of this? Is there a way to catch the Exception and call reload() for the webview render properly?

    opened by luunc 5
  • Update chart in flutter

    Update chart in flutter

    Hello, I would like to dynamically update the dataset of my flutter_echart. I'm looking the way to call this function: function addData(chart, label, data) { chart.data.labels.push(label); chart.data.datasets.forEach((dataset) => { dataset.data.push(data); }); chart.update(); }

    without rebuilding the entire chart, just animate the graph with the new data: is there a way to run scripts in 'extraScript' after the chart was generated?

    opened by lironiz 5
  • App crashes to load

    App crashes to load

    Launching lib/main.dart on sdk gphone64 arm64 in debug mode... Running Gradle task 'assembleDebug'... ✓ Built build/app/outputs/flutter-apk/app-debug.apk. Debug service listening on ws://127.0.0.1:59859/_2JOl-2dy-4=/ws Syncing files to device sdk gphone64 arm64... I/WebViewFactory(20877): Loading com.google.android.webview version 101.0.4951.74 (code 495157434) W/_charts_example(20877): Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (unsupported, reflection, allowed) W/_charts_example(20877): Accessing hidden method Landroid/os/Trace;->traceBegin(JLjava/lang/String;)V (unsupported, reflection, allowed) W/_charts_example(20877): Accessing hidden method Landroid/os/Trace;->traceEnd(J)V (unsupported, reflection, allowed) W/_charts_example(20877): Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (unsupported, reflection, allowed) W/_charts_example(20877): Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (unsupported, reflection, allowed) I/cr_WVCFactoryProvider(20877): Loaded version=101.0.4951.74 minSdkVersion=29 isBundle=false multiprocess=true packageId=2 I/cr_LibraryLoader(20877): Successfully loaded native library I/cr_CachingUmaRecorder(20877): Flushed 9 samples from 9 histograms. D/CompatibilityChangeReporter(20877): Compat change id reported: 183155436; UID 10166; state: ENABLED W/chromium(20877): [WARNING:dns_config_service_android.cc(115)] Failed to read DnsConfig. D/EGL_emulation(20877): eglMakeCurrent: 0xb400007d6ced93d0: ver 3 0 (tinfo 0x7f80981080) (first time) E/flutter (20877): [ERROR:flutter/fml/platform/android/jni_util.cc(204)] java.lang.IllegalStateException: Platform view hasn't been initialized from the platform view channel. E/flutter (20877): at io.flutter.plugin.platform.PlatformViewsController.initializePlatformViewIfNeeded(PlatformViewsController.java:732) E/flutter (20877): at io.flutter.plugin.platform.PlatformViewsController.onDisplayPlatformView(PlatformViewsController.java:791) E/flutter (20877): at io.flutter.embedding.engine.FlutterJNI.onDisplayPlatformView(FlutterJNI.java:1380) E/flutter (20877): at android.os.MessageQueue.nativePollOnce(Native Method) E/flutter (20877): at android.os.MessageQueue.next(MessageQueue.java:335) E/flutter (20877): at android.os.Looper.loopOnce(Looper.java:161) E/flutter (20877): at android.os.Looper.loop(Looper.java:288) E/flutter (20877): at android.app.ActivityThread.main(ActivityThread.java:7898) E/flutter (20877): at java.lang.reflect.Method.invoke(Native Method) E/flutter (20877): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) E/flutter (20877): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) E/flutter (20877): F/flutter (20877): [FATAL:flutter/shell/platform/android/platform_view_android_jni_impl.cc(1469)] Check failed: fml::jni::CheckException(env). F/libc (20877): Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 20877 (_charts_example), pid 20877 (_charts_example)


    Build fingerprint: 'google/sdk_gphone64_arm64/emu64a:13/TPB4.220624.004/8808248:user/release-keys' Revision: '0' ABI: 'arm64' Timestamp: 2023-01-02 12:06:42.597788572+0545 Process uptime: 3s Cmdline: com.example.syncfusion_flutter_charts_example pid: 20877, tid: 20877, name: _charts_example >>> com.example.syncfusion_flutter_charts_example <<< uid: 10166 tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE) pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY) signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr -------- Abort message: '[FATAL:flutter/shell/platform/android/platform_view_android_jni_impl.cc(1469)] Check failed: fml::jni::CheckException(env). ' x0 0000000000000000 x1 000000000000518d x2 0000000000000006 x3 0000007fc64f5650 x4 6d602e6c716e6573 x5 6d602e6c716e6573 x6 6d602e6c716e6573 x7 7f7f7f7f7f7f7f7f x8 00000000000000f0 x9 0000007f7f3c9a00 x10 0000000000000001 x11 0000007f7f407ce4 x12 0000000000000de3 x13 000000000000007e x14 0000007fc64f4520 x15 000001f9b5496f66 x16 0000007f7f46cd60 x17 0000007f7f449b70 x18 0000007f85ae8000 x19 000000000000518d x20 000000000000518d x21 00000000ffffffff x22 b400007d3cee1f08 x23 00000000000000dc x24 b400007d9ced1190 x25 000000000000007f x26 0000000000000000 x27 00000000000000f1 x28 0000007fc64f5958 x29 0000007fc64f56d0 lr 0000007f7f3f9868 sp 0000007fc64f5630 pc 0000007f7f3f9894 pst 0000000000001000 backtrace: #00 pc 0000000000051894 /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: 058e3ec96fa600fb840a6a6956c6b64e) #01 pc 000000000156f9cc /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #02 pc 00000000015945b4 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #03 pc 000000000157b818 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #04 pc 0000000001c6c1cc /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #05 pc 00000000018bd600 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #06 pc 00000000018bc234 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #07 pc 00000000018bcd24 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #08 pc 00000000018bdb48 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #09 pc 00000000018bc678 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #10 pc 00000000018bc3d0 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #11 pc 00000000018bde28 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #12 pc 00000000015952b0 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #13 pc 000000000159ab58 /data/app/~~OLt4PnyJXkB2v7ACceDkXA==/com.example.syncfusion_flutter_charts_example-WntsDr5fP1VYoVRLLGpe5g==/lib/arm64/libflutter.so (BuildId: 4eada3eb5afdd9bb6982917520d32254e275a824) #14 pc 0000000000011074 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+808) (BuildId: 5a0d720732600c94ad8354a1188e9f52) #15 pc 000000000015a660 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: 652257cd0faef901accde2659193d1c3) #16 pc 00000000001a9094 /system/framework/arm64/boot-framework.oat (art_jni_trampoline+116) (BuildId: 1549e9510d42e3841c5e4c3800af4daa83cc39bb) #17 pc 000000000020a910 /apex/com.android.art/lib64/libart.so (nterp_helper+5648) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #18 pc 00000000004980aa /system/framework/framework.jar (android.os.MessageQueue.next+34) #19 pc 000000000020a254 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #20 pc 0000000000497098 /system/framework/framework.jar (android.os.Looper.loopOnce+12) #21 pc 0000000000209334 /apex/com.android.art/lib64/libart.so (nterp_helper+52) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #22 pc 0000000000497886 /system/framework/framework.jar (android.os.Looper.loop+162) #23 pc 0000000000209334 /apex/com.android.art/lib64/libart.so (nterp_helper+52) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #24 pc 00000000001bb65e /system/framework/framework.jar (android.app.ActivityThread.main+202) #25 pc 0000000000436c00 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+576) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #26 pc 0000000000469334 /apex/com.android.art/lib64/libart.so (_jobject* art::InvokeMethod<(art::PointerSize)8>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1960) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #27 pc 0000000000468b64 /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*) (.__uniq.165753521025965369065708152063621506277)+48) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #28 pc 0000000000099148 /system/framework/arm64/boot.oat (art_jni_trampoline+120) (BuildId: ea692a544a012e5ae0589def08d76ae73b248ab5) #29 pc 000000000020a2b0 /apex/com.android.art/lib64/libart.so (nterp_helper+4016) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #30 pc 00000000003f71de /system/framework/framework.jar (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22) #31 pc 00000000007bc52c /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+3228) (BuildId: 1549e9510d42e3841c5e4c3800af4daa83cc39bb) #32 pc 0000000000436c00 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+576) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #33 pc 0000000000582140 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+900) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #34 pc 00000000005f5e14 /apex/com.android.art/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+160) (BuildId: 97fdb979efb7d2b596fa4fceabaad95b) #35 pc 00000000000bcad0 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+120) (BuildId: 652257cd0faef901accde2659193d1c3) #36 pc 00000000000c85c4 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vectorandroid::String8 const&, bool)+840) (BuildId: 652257cd0faef901accde2659193d1c3) #37 pc 0000000000002554 /system/bin/app_process64 (main+1280) (BuildId: a1ab812b262121cb66f7cbe228dc9674) #38 pc 000000000004a0f4 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+96) (BuildId: 058e3ec96fa600fb840a6a6956c6b64e) Lost connection to device.

    opened by sumanmyon 0
  • Call Dart function with parameters

    Call Dart function with parameters

    How to call a dart function inside the option string with parameters? I tried the standard @JS way but it doesn't work. The function is never called.

    Example:

    option: '''
    {
      // ...
      series: [
        {
          equation: {
            x: {
              step: 1
            },
            y: {
              step: 1
            },
            z: function (x, y) {
              return `functionName(x, y)`;
            }
          },
        }
      ]
    }
    ''',
    
    opened by SuricateTrading 0
  • After setting   enterable: true, tooltip is not hide in touch device using flutter sdk

    After setting enterable: true, tooltip is not hide in touch device using flutter sdk

    tooltip: { show: true, trigger: 'axis', alwaysShowContent: false, triggerOn: 'click', enterable: true, appendToBody: true, formatter: function (params) { let rez = ''; params.forEach((item) => { if (item.data[2] === '' || item.data[3] === '') { var currentDateTime = new Date(item.data[0]); var hrs = currentDateTime.getHours(); var mnts = currentDateTime.getMinutes(); var AMPM = hrs >= 12 ? 'PM' : 'AM'; hrs = hrs % 12; hrs = hrs ? hrs : 12; mnts = mnts < 10 ? '0' + mnts : mnts; var result = hrs + ':' + mnts + ' ' + AMPM; var s = '

    ' + '
    ' + item.data[1] + '
    ' + '
    ' + result + '
    ' + '
    ' + '
    '; rez += s; } else { var jsonData = {}; jsonData['activity_id'] = item.data[2]; jsonData['activity_type'] = item.data[3]; jsonData['scan_time'] = item.data[0]; Messager.postMessage(JSON.stringify(jsonData)); } }); return rez; } },

    extraScript: ''' chart.on('datazoom', () => { chart.dispatchAction({ type: 'hideTip', }); }); ''',

    opened by fitterfly-parth 0
Releases(v2.4.0)
  • v2.4.0(Aug 13, 2022)

Owner
LIN Chen
Data visualization
LIN Chen
Maybe this is the best k chart in Flutter.Support drag,scale,long press,fling.And easy to use.

k_chart Maybe this is the best k chart in Flutter.Support drag,scale,long press,fling.And easy to use. display image gif Getting Started Install depen

OpenFlutter 342 Jan 9, 2023
A beautiful bezier line chart widget for flutter that is highly interactive and configurable.

Bezier Chart A beautiful bezier line chart widget for flutter that is highly interactive and configurable. Features Multi bezier lines Allow numbers a

Aeyrium 428 Dec 21, 2022
Charts Library for Flutter, written in Dart with Flutter.

Table of Contents New in the current release Illustration of the new "iterative auto layout" feature Autolayout step 1 Autolayout step 2 Autolayout st

Milan Zimmermann 225 Dec 25, 2022
Animated radial and pie charts for Flutter

Flutter Circular Chart A library for creating animated circular chart widgets with Flutter, inspired by Zero to One with Flutter. Overview Create easi

Victor Choueiri 387 Dec 26, 2022
Beautiful sparkline charts for Flutter

flutter_sparkline Beautiful sparkline charts for Flutter. Installation Install the latest version from pub. Quick Start Import the package, create a S

Victor Choueiri 255 Dec 21, 2022
Elegant OHLC Candlestick and Trade Volume charts for @Flutter

flutter_candlesticks Elegant OHLC Candlestick and Trade Volume charts for Flutter Usage Install for Flutter with pub. Property Description data Requir

Trent Piercy 402 Dec 21, 2022
A powerful Flutter chart library, currently supporting Line Chart, Bar Chart, Pie Chart, Scatter Chart and Radar Chart.

FL Chart ?? A library to draw fantastic charts in Flutter ?? Chart Types LineChart BarChart PieChart Read More Read More Read More ScatterChart RadarC

Iman khoshabi 5.2k Dec 27, 2022
A Flutter data visualization library based on Grammar of Graphics.

Graphic is now under a total refactoring. The prior available version code is here: v0.3.0 . A Flutter data visualization library based on Grammar of

LIN Chen 906 Jan 3, 2023
Flutter cryptocurrency UI dashboard.

?? ?? Crypto Dashboard Flutter UI Kit ?? ?? ?? ⭐️ ⭐️ ??‍?? Free Flutter UI Kits based on designs on UpLabs ?? . Watch Youtube Speed code Tutorial Here

Olayemii Garuba 69 Nov 20, 2022
A scrollable time chart in Flutter.

time_chart An amazing time chart in Flutter. Chart Types TimeChart AmountChart Getting Started 1 - Depend on it Add it to your package's pubspec.yaml

Minseong Kim 26 Oct 28, 2022
[reborned barcode_scan] A flutter plugin for reading 2D barcodes and QR codes.

Reborned ?? Original barcode_scan was discontinued, so barcode_scan2 was borned with sound null safety support ?? barcode_scan2 A flutter plugin for s

Masayuki Ono (mono) 61 Jan 6, 2023
A library to draw fantastic bar charts race in Flutter

bar_chart_race The first library to draw fantastic bar charts race in Flutter Usage Let's get started add the dependencies to your app: dependencies:

Mimene Younes 6 Jun 24, 2022
Sleek circular slider for Flutter

Sleek circular slider/progress bar & spinner for Flutter A highly customizable circular slider/progress bar & spinner for Flutter. Getting Started Ins

Mat Nuckowski 476 Dec 16, 2022
MPAndroidChart Flutter version

MPFlutterChart flutter charts just like MPAndroidChart The minimum version currently supported is 1.7.3. If you use flutter with lower version, checko

null 287 Dec 21, 2022
Flutter chart library contains depth charts supporting various indicators and zooming

flutter_k_chart 介绍 一个仿火币的flutter图表库包含深度图,支持各种指标及放大缩小、平移等操作 webdemo演示 Demo v0.1.0:下载 APK 演示 简单用例 1.在 pubspec.yaml 中添加依赖 本项目数据来自火币openApi,火币的接口可能需要翻墙,接口

gwh 259 Dec 30, 2022
A flutter package which makes it easier to plot different types of charts with lots of customization, made purely in dart

multi_charts It is a library that provides different types of charts to plot data points. Currently it supports only Radar Chart, but will support mor

Intkhab Ahmed 28 Nov 9, 2022
Flutter package for creating simple yet modern looking charts

A package for creating simple yet modern looking charts. Five chart types Bar Gauge Line Pie Radar Canvas + DOM modern_charts combines Canvas and DOM

Man Hoang 68 Nov 4, 2022
Animated line chart for flutter

fl_animated_linechart An animated chart library for flutter. Support for datetime axis Multiple y axis, supporting different units Highlight selection

null 51 Sep 25, 2022
Flutter GraphView is used to display data in graph structures. It can display Tree layout, Directed and Layered graph. Useful for Family Tree, Hierarchy View.

GraphView Get it from | Flutter GraphView is used to display data in graph structures. It can display Tree layout, Directed and Layered graph. Useful

Nabil Mosharraf 326 Jan 6, 2023