【Flutter】graphic图表实现tooltip一段时间后自动隐藏

概述

graphic图表中提供了自定义tooltip的事件,可通过selectionsonclear配置手势选项和可识别设备,默认情况下tooltip需要双击隐藏,但这并不符合我们的需求。通过调研发现,若想实现tooltip隔几秒后隐藏,可通过StreamController向chart发送订阅流事件隐藏,这感觉更像是局部刷新
在这里插入图片描述

实现

import 'dart:async';
import 'package:flutter/material.dart';class ChartWidget extends StatefulWidget {const ChartWidget({super.key});@overrideState<ChartWidget> createState() => _ChartWidgetState();
}class _ChartWidgetState extends State<ChartWidget> {LineChart? callBackValue;//流Stream 控制器final StreamController<LineChart?> _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);});}// 自定义tooltipList<MarkElement> simpleTooltip(Size size,Offset anchor,Map<int, Tuple> selectedTuples,) {_hideTooltip(图表数据);// 自定义处理....}@overrideWidget build(BuildContext context) {// //接收消息return StreamBuilder<LineChart?>(//绑定Streamstream: _streamController.stream,builder: (BuildContext context, AsyncSnapshot<LineChart?> 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: StreamController<GestureEvent>.broadcast(),// 将接收到的数据赋值给图表datadata: snapshot.data!,// 其他配置....tooltip: TooltipGuide(renderer: simpleTooltip,),)),],),),);},);}
}

效果

在这里插入图片描述

溯源

  1. github作者回复issues/64
  2. 作者文章Graphic 开发笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3DMax物理画笔物体填充放置绘制画笔插件安装使用方法

3DMax物理画笔物体填充放置绘制画笔插件&#xff0c;允许您使用笔刷以非常自然的方式用物品快速填充场景&#xff0c;并使用刚体模拟自动放置它们。 无论你是从事建筑、游戏电影还是商业。。。等等&#xff0c;你经常需要用一些物品为你的场景添加细节。手工放置它们是乏味的&…

Threejs发光闪烁提示特效

一、导语 发光闪烁特效应该在我们的项目中是经常需要去封装的一个特效吧&#xff0c;一般用于点击选择&#xff0c;选中物体&#xff0c;或者一些特效加持于中心物体&#xff0c;物体碰撞检测后的发光特效等等 二、分析 我们可以合理的使用后处理特效&#xff0c;上步骤&am…

hive查看数据库出现org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

FAILED: HiveException java,lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 在启动hive后&#xff0c;使用show databses查看数据库时发现&#xff0c;出现了这个错误 情况一&#xff1a; 根据搜索查找以及…

Docker一 | Docker的基本使用

目录 Docker的基本使用 常用命令 启动Docker 查看Docker的运行状态 重启Docker 停止Docker服务 查看命令相关信息 镜像命令 列出本地主机上的镜像 搜索某个镜像的名称 拉取指定的镜像到本地 查看镜像/容器/数据卷所占的空间 删除某个镜像 容器命令 启动容器 列出…

数字电路基础知识系列(六)之LC滤波器的基础知识

LC滤波器&#xff0c;是指将电感(L)与电容器 ©进行组合设计构成的滤波电路&#xff0c;可去除或通过特定频率的无源器件。电容器具有隔直流通交流&#xff0c;且交流频率越高越容易通过的特性。而电感则具有隔交流通直流&#xff0c;且交流频率越高越不易通过的特性。因此…

linux如何使用Xshell远程连接

简介&#xff1a;本文的一切条件基于redhat的linux操作系统。 目录 1、创建虚拟机&#xff1a; 2、使用命令查看网段信息 拓展1&#xff1a;&#xff08;若网卡上没有网段信息&#xff0c;可以使用任意两种方法&#xff09;&#xff1a; 准备工作&#xff1a; 1、点击左…

git入门教程+常用命令

Git入门教程 本文章主要参照视频教程&#xff1a;https://www.bilibili.com/video/BV1FE411P7B3/?spm_id_from333.337.search-card.all.click&vd_source06caf161b187fb3f4c039bc15e238fea 为什么要使用GIT 版本控制是项目、文档迭代的必然要求&#xff0c;所以需要使用…

Springboot自定义start首发预告

Springboot自定义start首发预告 基于Springboot的自定义start , 减少项目建设重复工作, 如 依赖 , 出入参包装 , 日志打印 , mybatis基本配置等等等. 优点 模块化 可插拔 易于维护和升级 定制化 社区支持(后期支持) 发布时间 预告: 2023-12-10 预计发布: 2024-1-1 , 元旦首…

Android 设置音量默认值

在车机 Audio 开发中&#xff0c;有很多场景需要设置音量的最大值和最小值问题&#xff0c;例如通话模式通常是禁止静音的&#xff0c;耳机模式调整到较大音量时开机后会恢复一个最大默认值等问题。而且通常情况下不通车型的默认值可能会不同&#xff0c;这篇文章就来看一下如何…

Java多线程是什么?

Java多线程是什么&#xff1f; Java多线程是指在程序中同时运行多个线程&#xff0c;每个线程都是独立运行的&#xff0c;即有自己的执行路径、栈、寄存器等资源&#xff0c;并且可以同步地访问共享数据。 Java多线程的主要优势在于能够充分利用多核处理器&#xff0c;同时提…

移动端原生实现列表列固定横向滚动功能

功能介绍&#xff1a; 在移动端开发中&#xff0c;会用到列表作为信息展示方式&#xff0c;一般希望上下滚动时&#xff0c;可以固定表头&#xff0c;左右滚动时&#xff0c;可以固定最左列。 需求&#xff1a; 1、列表可以使用数组循环遍历&#xff1b; 2、上下滚动时&…

离线环境下使用百度地图(vue版)(展示自己的地图瓦片)3.0版本api

1.下载自己想要的地图网片 (1)瓦片图下载 提取百度网盘中文件&#xff0c;然后运行exe文件&#xff0c;选择要下载的层级及地区即可 百度网盘链接&#xff1a;https://pan.baidu.com/s/16sOJ9ws7HCgNH3EMf7Ejyg?pwd0q0e 提取码&#xff1a;0q0e (2)将瓦片图映射到网上 推荐使…

CSS中常用的10个文本样式属性

一个页面中&#xff0c;文本样式&#xff0c;是必不可少的&#xff0c;当然css也给我们准备了很多很多很多的文本样式&#xff0c;以下列举了10个常用的文本样式属性及常用的属性值&#xff0c;掌握了&#xff0c;也基本满足使用了 1: text-transform 可以用来设置文本的大小写…

Python-docx 深入word源码 自定义字符间距

代码和实现效果 from docx import Document from docx.oxml import OxmlElement from docx.oxml.ns import qn from docx.shared import Pt# 调整pt设置字间距 def SetParagraphCharSpaceByPt(run, pt1):通过修改word源码方式, 添加w:spacing标签直接通过调整pt来设置字符间距…

Blender学习--制作带骨骼动画的机器人

1. 首先创建一个机器人模型 时间关系&#xff0c;这部分步骤有时间补充 2. 然后为机器人创建一副骨架 时间关系&#xff0c;这部分步骤有时间补充 3.骨骼绑定 切换到物体模式&#xff0c;选中机器人头部&#xff0c;Shift选中骨骼&#xff0c;切换到姿态模式&#xff0c;&am…

SpringBoot集成系列--xxlJob

文章目录 一、搭建调度中心xxl-job-admin1、下载项目2、调整项目参数3、执行初始化数据库SQL4、启动项目5、访问 二、集成步骤1、添加xxl-job的依赖2、添加xxl-job的依赖3、配置执行器4、创建执行器5、开发任务1&#xff09;方式1&#xff1a;BEAN模式&#xff08;方法形式&…

RocketMQ源码

RocketMQ的核心三流程 启动流程 RocketMQ服务端由两部分组成NameServer和Broker&#xff0c;NameServer是服务的注册中心&#xff0c;Broker会把自己的地址注册到NameServer&#xff0c;生产者和消费者启动的时候会先从NameServer获取Broker的地址&#xff0c;再去从Broker发…

【自动驾驶】2023年度盘点:智能汽车、自动驾驶、车联网必读书

2023年&#xff0c;智能驾驶和新能源汽车行业仍然有着肉眼可见的新进展。自动驾驶技术继续尝试从辅助驾驶向自动驾驶的过渡&#xff0c;更重要的是相关技术成本的下降。根据《全球电动汽车展望2023》等行业报告&#xff0c;预计2023年平均成本将降至100美元/千瓦时以下&#xf…

知识笔记(四十八)———mysql的优缺点

MySQL作为一个广泛应用的关系型数据库管理系统&#xff0c;具有以下优点和缺点&#xff1a; 优点&#xff1a; 开源和免费&#xff1a;MySQL是开源软件&#xff0c;用户可以免费获取和使用它。这使得MySQL成为个人开发者和小型组织的理想选择。 良好的性能&#xff1a;MySQL经…

成都工业学院Web技术基础(WEB)实验八:BOM、DOM基本操作

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考&#xff0c;前端变化比较大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一样 3、图片和文字仅为示例&#xff0c;需要自行替换 4、如果代码不满足你的要求&#xff0c;请寻求其他的…