泉州官方网站,能看建设动漫黄图的网站,如何将自己做的网页做成网站,网校平台搭建概述
graphic图表中提供了自定义tooltip的事件#xff0c;可通过selections中on和clear配置手势选项和可识别设备#xff0c;默认情况下tooltip需要双击隐藏#xff0c;但这并不符合我们的需求。通过调研发现#xff0c;若想实现tooltip隔几秒后隐藏#xff0c;可通过Str…概述
graphic图表中提供了自定义tooltip的事件可通过selections中on和clear配置手势选项和可识别设备默认情况下tooltip需要双击隐藏但这并不符合我们的需求。通过调研发现若想实现tooltip隔几秒后隐藏可通过StreamController向chart发送订阅流事件隐藏这感觉更像是局部刷新
实现
import dart:async;
import package:flutter/material.dart;class ChartWidget extends StatefulWidget {const ChartWidget({super.key});overrideStateChartWidget createState() _ChartWidgetState();
}class _ChartWidgetState extends StateChartWidget {LineChart? callBackValue;//流Stream 控制器final StreamControllerLineChart? _streamController StreamController();overridevoid dispose() {//销毁_streamController.close();super.dispose();}overridevoid initState() {super.initState();//发送消息_streamController.add(初始化数据);}Timer? _timer;// tooltip几秒后自动消失void _hideTooltip(value) {// 如果已经有一个计时器在运行取消它_timer?.cancel();// 启动一个新的计时器_timer Timer(const Duration(seconds: 3), () {print(3秒后自动消失);_streamController.add(value);});}// 自定义tooltipListMarkElement simpleTooltip(Size size,Offset anchor,Mapint, Tuple selectedTuples,) {_hideTooltip(图表数据);// 自定义处理....}overrideWidget build(BuildContext context) {// //接收消息return StreamBuilderLineChart?(//绑定Streamstream: _streamController.stream,builder: (BuildContext context, AsyncSnapshotLineChart? snapshot) {if (snapshot.data null) {return const Center(child: CircularProgressIndicator(),);}// 返回chart组件return SingleChildScrollView(child: Center(child: Column(children: Widget[Container(padding: const EdgeInsets.fromLTRB(20, 40, 20, 5),child: const Text(Group interactions,style: TextStyle(fontSize: 20),),),Container(margin: const EdgeInsets.only(top: 10),width: 450,height: 200,child: Chart(// 手势事件交互流gestureStream: StreamControllerGestureEvent.broadcast(),// 将接收到的数据赋值给图表datadata: snapshot.data!,// 其他配置....tooltip: TooltipGuide(renderer: simpleTooltip,),)),],),),);},);}
}
效果 溯源
github作者回复issues/64作者文章Graphic 开发笔记