【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.pswp.cn/news/213852.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213852.shtml
英文地址,請注明出處:http://en.pswp.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;請尋求其他的…