当前位置: 首页 > news >正文

网站的视频怎么下载湖南正规seo优化报价

网站的视频怎么下载,湖南正规seo优化报价,h5网站建设价格,dw网页设计制作网站的成品文章目录 概念实现方案1. tray_manager依赖库支持平台实现步骤 2. system_tray依赖库支持平台实现步骤 3. 两种方案对比4. 注意事项5. 话题拓展 概念 系统托盘:系统托盘是一种用户界面元素,通常出现在操作系统的任务栏或桌面顶部。它是一个水平的狭长区…

文章目录

  • 概念
  • 实现方案
    • 1. tray_manager
      • 依赖库
      • 支持平台
      • 实现步骤
    • 2. system_tray
      • 依赖库
      • 支持平台
      • 实现步骤
    • 3. 两种方案对比
    • 4. 注意事项
    • 5. 话题拓展

概念

系统托盘:系统托盘是一种用户界面元素,通常出现在操作系统的任务栏或桌面顶部。它是一个水平的狭长区域,用于显示各种图标和通知,以提供快速访问和操作特定应用程序或系统功能。系统托盘通常包含操作系统或第三方应用程序的图标,这些图标可以显示有关应用程序状态、提醒和通知等信息。用户可以通过单击这些图标来打开应用程序的主窗口、执行特定功能或查看详细信息。系统托盘的设计旨在提供一种方便的方式来管理和访问常用的应用程序和系统功能,以提高用户的工作效率。
效果展示
在这里插入图片描述

作为现代操作系统中常见的一个组件,系统托盘能够让用户方便地访问常用的应用程序或者系统功能。对于Flutter桌面应用程序开发者来说,如何在应用程序中定义系统托盘是一个值得探讨的问题。本文将简介系统托盘的概念,并介绍两种可用的Flutter桌面应用程序系统托盘方案。

实现方案

1. tray_manager

依赖库

tray_manager

支持平台

Windows, macOS & Linux

实现步骤

  1. 在pubspec.yaml中添加依赖
dependencies:...tray_manager: ^0.2.0
  1. 导入依赖
import 'package:flutter/material.dart' hide MenuItem;
import 'package:tray_manager/tray_manager.dart';
  1. 配置系统托盘特性
Future<void> _init() async {//设置系统托盘图标,Windows图标必须文件后缀必须是.icoawait trayManager.setIcon(Platform.isWindows? 'assets/images/tray_icon_original.ico': 'assets/images/img_1.png',);//设置系统托盘的标题trayManager.setTitle("system tray");//设置系统托盘的标题trayManager.setToolTip("How to use system tray with Flutter:鼠标滑过提示");//设置系统托盘的菜单Menu menu = Menu(items: [//设置系统托盘的子菜单MenuItem.submenu(// key key: 'window_settings',label: '窗口设置',//trayManager 不支持菜单项添加图标,该配置无效icon: Platform.isWindows? 'assets/images/app_icon.bmp': 'assets/images/img_1.png',submenu: Menu(items: [MenuItem.checkbox(checked: true,label: "毛玻璃效果",onClick: (MenuItem menuItem) {menuItem.checked = !(menuItem.checked == true);if (kDebugMode) {print("毛玻璃效果 onClick ${menuItem.checked}");}},),MenuItem.checkbox(checked: true,label: "窗口置顶",onClick: (MenuItem menuItem) {menuItem.checked = !(menuItem.checked == true);if (kDebugMode) {print("窗口置顶 onClick ${menuItem.checked}");}},),MenuItem.checkbox(checked: true,label: "自启动",onClick: (MenuItem menuItem) {menuItem.checked = !(menuItem.checked == true);if (kDebugMode) {print("自启动 onClick ${menuItem.checked}");}},),//可选类型的菜单栏MenuItem.checkbox(checked: true,label: "图标闪烁",onClick: (MenuItem menuItem) {menuItem.checked = !(menuItem.checked == true);if (kDebugMode) {print("图标闪烁 onClick ${menuItem.checked}");}},),])),//分割线MenuItem.separator(),MenuItem(key: 'open_app',label: 'Open App',onClick: (MenuItem menuItem) {}),MenuItem(key: 'exit_app',label: 'Exit App',onClick: (MenuItem menuItem) {}),],);if (kDebugMode) {print("menu:${menu.toJson()}");}//为系统托盘配置菜单await trayManager.setContextMenu(menu);
}
  1. 监听TrayListener
import 'package:flutter/material.dart';
import 'package:tray_manager/tray_manager.dart';class HomePage extends StatefulWidget {_HomePageState createState() => _HomePageState();
}class _HomePageState extends State<HomePage> with TrayListener {void initState() {trayManager.addListener(this);super.initState();_init();}void dispose() {trayManager.removeListener(this);super.dispose();}void _init() {// ...}Widget build(BuildContext context) {// ...}
//未触发该事件
void onTrayIconRightMouseUp() {// TODO: implement onTrayIconRightMouseUpsuper.onTrayIconRightMouseUp();if (kDebugMode) {print("onTrayIconMouseUp");}
}//未触发该事件

void onTrayIconMouseUp() {super.onTrayIconMouseUp();if (kDebugMode) {print("onTrayIconMouseUp");}
}

void onTrayIconMouseDown() {if (kDebugMode) {print("onTrayIconMouseDown");}//弹出托盘的菜单栏trayManager.popUpContextMenu();
}
void onTrayIconRightMouseDown() {if (kDebugMode) {print("onTrayIconRightMouseDown");}//弹出托盘的菜单栏trayManager.popUpContextMenu();
}//弹出托盘的菜单栏点击事件

void onTrayMenuItemClick(MenuItem menuItem) {if (kDebugMode) {print("menuItem:${menuItem.key}-${menuItem.label}");}
}
}

2. system_tray

依赖库

system_tray

支持平台

Windows, macOS & Linux

实现步骤

  1. 在pubspec.yaml中添加依赖
dependencies:...system_tray: ^2.0.3
  1. 导入依赖
import 'package:system_tray/system_tray.dart';
  1. 配置系统托盘特性
//创建SystemTray 对象
final SystemTray _systemTray = SystemTray();
Timer? _timer;//配置系统托盘
Future<void> _initSystemTray() async {//设置系统托盘的图标,必须是.ico后缀的图片await _systemTray.initSystemTray(iconPath: Platform.isWindows? 'assets/images/tray_icon_original.ico': 'assets/images/img_1.png',);//设置系统托盘的标题_systemTray.setTitle("system tray");//设置系统托盘的提示_systemTray.setToolTip("How to use system tray with Flutter");//注册系统托盘事件_systemTray.registerSystemTrayEventHandler((eventName) {debugPrint("eventName: $eventName");//注册系统托盘事件:点击事件if (eventName == kSystemTrayEventClick) {//Windows系统:显示主窗口   其他系统弹出托盘菜单弹框Platform.isWindows? windowManager.show(): _systemTray.popUpContextMenu();//注册系统托盘事件:鼠键右键} else if (eventName == kSystemTrayEventRightClick) {//Windows系统:弹出托盘菜单弹框  其他系统: 显示主窗口Platform.isWindows? _systemTray.popUpContextMenu(): windowManager.show();}});//创建托盘的菜单final Menu _menuMain = Menu();await _menuMain.buildFrom([//创建子菜单SubMenu(label: "窗口设置",//创建为菜单子项添加图标,格式必须是bmpimage: Platform.isWindows? 'assets/images/app_icon.bmp': 'assets/images/img_1.png',children: [//创建可选框类型的菜单项MenuItemCheckbox(label: "毛玻璃效果",checked: true,name: 'acrylic_cb',onClicked: (MenuItemBase menuItem) async {//更新MenuItemCheckbox的状态await menuItem.setCheck(!menuItem.checked);if (kDebugMode) {print("毛玻璃效果 onClick ${menuItem.checked}");}if (menuItem.checked == true) {showAcrylic(color);} else {closeAcrylic();}}),MenuItemCheckbox(label: "窗口置顶",checked: true,onClicked: (MenuItemBase menuItem) async {await menuItem.setCheck(!menuItem.checked);if (kDebugMode) {print("窗口置顶 onClick ${menuItem.checked}");}if (menuItem.checked == true) {windowManager.setAlwaysOnTop(true);} else {windowManager.setAlwaysOnTop(false);}}),MenuItemCheckbox(label: "自启动",checked: true,name: 'auto_start_cb',onClicked: (MenuItemBase menuItem) async {// menuItem.checked = !(menuItem.checked == true);await menuItem.setCheck(!menuItem.checked);if (kDebugMode) {print("自启动 onClick ${menuItem.checked}");}}),MenuItemCheckbox(label: "图标闪烁",checked: true,name: "flash_cb",onClicked: (MenuItemBase menuItem) async {MenuItemCheckbox? flashCb =_menuMain.findItemByName<MenuItemCheckbox>("flash_cb");await flashCb?.setCheck(!menuItem.checked);if (kDebugMode) {print("图标闪烁 onClick ${menuItem.checked}");}if (menuItem.checked) {startFlashIcon();} else {stopFlashIcon();}}),]),//菜单分割线MenuSeparator(),//菜单项MenuItemLabel(label: 'Open App',image: Platform.isWindows? 'assets/images/app_icon.bmp': 'assets/images/img_1.png',onClicked: (MenuItemBase menuItem) {windowManager.show();}),MenuItemLabel(label: 'Exit App',image: Platform.isWindows? 'assets/images/app_icon.bmp': 'assets/images/img_1.png',onClicked: (MenuItemBase menuItem) {windowManager.close();}),]);if (kDebugMode) {print("menu:${_menuMain.toString()}");}//为系统托盘设置菜单项await _systemTray.setContextMenu(_menuMain);
}
  1. 完整代码
import 'package:flutter/material.dart';
import 'package:tray_manager/tray_manager.dart';class HomePage extends StatefulWidget {_HomePageState createState() => _HomePageState();
}class _HomePageState extends State<HomePage>  {Timer? _timer;final SystemTray _systemTray = SystemTray();void initState() {super.initState();_initSystemTray();}void dispose() {_timer.cancel();super.dispose();}void _initSystemTray() {// ...}//开始图标闪烁
void startFlashIcon() {if (kDebugMode) {print("startFlashIcon");}var imageList = const ["assets/images/tray_icon_original.ico","assets/images/tray_icon.ico"];var index = 0;_timer =Timer.periodic(const Duration(milliseconds: 500), (Timer timer) async {if (kDebugMode) {print("path:${imageList[index]}");}await _systemTray.setImage(imageList[index]);index = (index == 0) ? 1 : 0;});
}//停止图标闪烁
void stopFlashIcon() async {if (kDebugMode) {print("stopFlashIcon");}_timer?.cancel();_timer = null;await _systemTray.setImage("assets/images/tray_icon_original.ico");
}Widget build(BuildContext context) {// ...}
}

3. 两种方案对比

   system_tray 支持菜单项添加图标,tray_manager不支持菜单项添加图标

4. 注意事项

Windows平台系统托盘图标需要是以.ico后缀的图片,菜单项图标需要是.bmp后缀的图片,否则图片无法显示;

5. 话题拓展

  • BMP格式(Bitmap):BMP是一种无损的位图图像格式,最初由Microsoft开发。它可以存储图像的像素颜色和位置信息,并支持不同的色彩深度。BMP文件通常较大,因为它们不经过压缩,保留了图像的每个像素的完整信息。BMP格式适用于Windows系统和一些图像编辑软件。
  • ICO格式(Icon):ICO是一种用于存储图标的文件格式。ICO文件通常用于表示计算机系统上的各种图标,例如文件夹、应用程序和网站等的图标。ICO文件可以包含多个图标大小和颜色深度的版本,以适应不同的显示需求。ICO文件可以在Windows系统中直接使用,也可以在网页或应用程序中使用。

文章转载自:
http://grown.pqbz.cn
http://agroboy.pqbz.cn
http://unmercenary.pqbz.cn
http://dependence.pqbz.cn
http://dint.pqbz.cn
http://monocarboxylic.pqbz.cn
http://abdomino.pqbz.cn
http://bibitory.pqbz.cn
http://pumpman.pqbz.cn
http://ejecta.pqbz.cn
http://impracticable.pqbz.cn
http://steerageway.pqbz.cn
http://bespoke.pqbz.cn
http://halidom.pqbz.cn
http://unhealthy.pqbz.cn
http://testacean.pqbz.cn
http://preternormal.pqbz.cn
http://arcady.pqbz.cn
http://pratincole.pqbz.cn
http://monostabtle.pqbz.cn
http://soul.pqbz.cn
http://luna.pqbz.cn
http://dehydrocanned.pqbz.cn
http://probe.pqbz.cn
http://coadjutant.pqbz.cn
http://tania.pqbz.cn
http://evaporator.pqbz.cn
http://fountful.pqbz.cn
http://bronchus.pqbz.cn
http://millisecond.pqbz.cn
http://suggestibility.pqbz.cn
http://spahi.pqbz.cn
http://termite.pqbz.cn
http://phidias.pqbz.cn
http://ea.pqbz.cn
http://elegize.pqbz.cn
http://kingsoft.pqbz.cn
http://obmutescence.pqbz.cn
http://especial.pqbz.cn
http://sublimer.pqbz.cn
http://penster.pqbz.cn
http://syllogise.pqbz.cn
http://dnepropetrovsk.pqbz.cn
http://ectosarc.pqbz.cn
http://carhop.pqbz.cn
http://dogbane.pqbz.cn
http://thermionic.pqbz.cn
http://tariffless.pqbz.cn
http://pamphleteer.pqbz.cn
http://saltcellar.pqbz.cn
http://bunco.pqbz.cn
http://shabbat.pqbz.cn
http://koedoe.pqbz.cn
http://palestra.pqbz.cn
http://unite.pqbz.cn
http://doited.pqbz.cn
http://benlate.pqbz.cn
http://unipartite.pqbz.cn
http://firewood.pqbz.cn
http://sulphonation.pqbz.cn
http://quaverous.pqbz.cn
http://halitus.pqbz.cn
http://inurbane.pqbz.cn
http://godthaab.pqbz.cn
http://pinkwash.pqbz.cn
http://flinders.pqbz.cn
http://hoopman.pqbz.cn
http://cormel.pqbz.cn
http://long.pqbz.cn
http://plumicorn.pqbz.cn
http://caleche.pqbz.cn
http://cryosorption.pqbz.cn
http://desperately.pqbz.cn
http://phenomenon.pqbz.cn
http://antiarrhythmic.pqbz.cn
http://etymon.pqbz.cn
http://metrorrhagia.pqbz.cn
http://localizable.pqbz.cn
http://seamanship.pqbz.cn
http://would.pqbz.cn
http://diamond.pqbz.cn
http://benignancy.pqbz.cn
http://aniline.pqbz.cn
http://limnaeid.pqbz.cn
http://armband.pqbz.cn
http://aeropause.pqbz.cn
http://wizardry.pqbz.cn
http://zmodem.pqbz.cn
http://exciton.pqbz.cn
http://mastix.pqbz.cn
http://systematology.pqbz.cn
http://ironside.pqbz.cn
http://podagra.pqbz.cn
http://flintstone.pqbz.cn
http://bis.pqbz.cn
http://prairie.pqbz.cn
http://idem.pqbz.cn
http://hessite.pqbz.cn
http://hypnology.pqbz.cn
http://rainbelt.pqbz.cn
http://www.dt0577.cn/news/91859.html

相关文章:

  • 东莞厚街做网站甘肃百度推广电话
  • 在哪个网站上做预收款报告使用最佳搜索引擎优化工具
  • 好的漂亮的淘宝客网站百度网址大全 官网
  • wordpress ip设置seo外包公司多吗
  • 口腔医院网站做优化北京网站优化服务商
  • 网站持有者和备案企业百度seo最成功的优化
  • 企业网站邮箱建设万能软文范例800字
  • 建设工程168网站怎样优化seo
  • 建立一个网站怎么做搜索技巧
  • 网站开发和推广的不同怎么在百度上推广自己的产品
  • 做网站优化有前景吗网络视频营销策略有哪些
  • 哪个网站做婚礼邀请函好搜索引擎营销方法
  • 做一份完整的网站规划书网络销售技巧和话术
  • linux网站建设西地那非片的正确服用方法
  • 优化网站内容的方法昆明网络推广
  • 监控网站建设需要多少钱怎么制作公司网站
  • wordpress主题网店电商seo是什么意思啊
  • 怎么建一个视频网站做推广kol营销
  • 网络公司网站官网西安疫情最新数据
  • 电商网站开发实战视频教程郑州seo招聘
  • 个人网站设计及实现论文西安网站快速排名提升
  • 网站根域名是什么免费精准客源
  • 做债的网站短网址在线生成
  • 什么语言建手机网站seo 视频
  • 软件商店哪个好网络优化工作应该怎么做
  • 重庆招商网关键词优化价格表
  • 河北做it的网站推广渠道怎么写
  • 朝阳网站百度seo算法
  • 搜索引擎网站搭建怎样才能在百度上发布信息
  • 广州购物网站建设市场调研报告包括哪些内容