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

快讯,Flutter PC 多窗口新进展,已在 Ubuntu/Canonical 展示

相信 Flutter 开发者对于 Flutter PC 多窗口的支持一直是「望眼欲穿」,而根据 #142845 相关内容展示, 在上月 27 号的 Ubuntu 峰会,Flutter 展示了多窗口相关进展。

事实上 Ubuntu 和 Flutter 的进一步合作关系应该是在 2021 年就开始了,当时在谈到 Canonical 对 Flutter 的贡献时,Ken 就指出过,Ubuntu 团队将努力在所有桌面平台上为 Flutter 提供完整的多窗口支持。

虽然是在 Ubuntu/Canonical 上发布,但是多窗口支持肯定是会把它带到所有平台的,只是需要从某个平台开始进行:

目前对应的支持草稿和 API 方案已经公布,例如:

  • 需要一个类似 window.dart 的 library 来让开发者可以通过它创建、更新和销毁窗口,提供了与窗口系统交互的全局方法,窗口小部件树必须包装在 MultiWindowApp 窗口小部件等。
  • 需要一个 flutter/windowing 的 MethodChannel API,位于 window.dart 和 embedder 之间协调交互
  • 为多窗口运行环境增加对应的 runner 等
///举个例子:
void main() {runWidget(MultiWindowApp(initialWindows[j][k]: <Future<Window> Function(BuildContext)>[(BuildContext context) => createWindow(context: context,size: const Size(640, 480),builder: (BuildContext context) {return const MyApp();})]));
}

在大会上展示的多窗口支持 Window、Dialog、Satellites、Popup 等形式,还支持自定义定位器与约束调整的相关能力:

例如,最常规的多窗口场景,支持子窗口打开新窗口,窗口在任务管理中心可以看到:

支持多种 Dialogs 对话框模式,例如模态对话框、非模态对话框、作为对话框父级的对话框等:

支持 Satellites ,可以使用预设进行放置,显示随父级移动,在顶级窗口不活动时显示自动隐藏和显示 Satellites 父级对话框等:

支持 Popup 窗口,可以自定义定位器,可以锚定到视图、锚定到窗口等:

支持约束调整,可以滑动、翻转、调整大小:

根据设计文档显示,这些在 API 里也有类似支持,例如创建窗口的方法会返回与窗口原型相对应的特定子类,如: TopLevel、PopupWindow、DialogWindow、SatelliteWindow 和 TipWindow 等。

而在支持多窗口正常运行,就需要更改支持多窗口的每个平台的 runner 代码,对于单窗口应用,默认的 runner 代码将保持不变,但用户在运行 flutter create * 时应该能够选择加入多窗口 runner 。

同时,来自 Material API 的许多核心 Widget 和方法需要迁移以支持使用新的多窗口功能,例如是:

  • showDialog
  • showMenu
  • MenuAnchor
  • ····

可以看到,本次分享的 Flutter 多窗口支持从设计到例子已经比较完善了,虽然还不支持什么时候可以正式看到它,毕竟从实现上看它涉及的底层修改并不少,但是总体来看落地的希望还是很大的。

PS:除了现在可以在鸿蒙 next 手机端看到 Flutter 之后,也许你也有机会在以后的鸿蒙 PC 看到 Flutter ,目前 Flutter 在鸿蒙 next 支持上也有一些 App 上架了,例如在 ArkUI Inspector 下可以看到微信的朋友圈是 Flutter 实现:

更多可见:

  • https://docs.google.com/document/u/0/d/1eQG-IS7r4_S9_h50MY_hSGwUVtgSTRSLzu7MLzPNd2Y/mobilebasic?tab=t.0&_immersive_translate_auto_translate=1

  • https://github.com/flutter/flutter/pull/157525

  • https://github.com/flutter/flutter/issues/142845#issuecomment-2435738214

相关文章:

快讯,Flutter PC 多窗口新进展,已在 Ubuntu/Canonical 展示

相信 Flutter 开发者对于 Flutter PC 多窗口的支持一直是「望眼欲穿」&#xff0c;而根据 #142845 相关内容展示&#xff0c; 在上月 27 号的 Ubuntu 峰会&#xff0c;Flutter 展示了多窗口相关进展。 事实上 Ubuntu 和 Flutter 的进一步合作关系应该是在 2021 年就开始了&…...

BigDecimal 详解

阿里巴巴 Java 开发手册》中提到&#xff1a;“为了避免精度丢失&#xff0c;可以使用 BigDecimal 来进行浮点数的运算”。 浮点数的运算竟然还会有精度丢失的风险吗&#xff1f;确实会&#xff01; 示例代码&#xff1a; float a 2.0f - 1.9f; float b 1.8f - 1.7f; Syst…...

ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板

项目简介 在生活品质日益提升的今天&#xff0c;智能家居系统已经走进了千家万户&#xff0c;并逐渐成为现代生活的一部份。与此同时&#xff0c;一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板&#xff0c;已经成为众多家庭的新宠。这种高效、直观的智能化的解决方…...

CSS3新增盒子属性(三)

1、CSS3新增盒子属性 1.1 box-sizing 设置盒子的大小。 content-box&#xff1a;设置内容区的大小&#xff1b;border-box&#xff1a;设置盒子的总大小。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><t…...

Manus在虚拟现实仿真模拟中的应用案例分享

Manus虚拟现实手套作为一种高精度的人机交互设备&#xff0c;在仿真模拟领域展现出了巨大的应用潜力。通过提供实时、准确的手指动作捕捉数据&#xff0c;Manus手套为多个行业带来了前所未有的仿真体验&#xff0c;推动了技术发展和应用创新。 技术特点 1. 高精度手指跟踪 Ma…...

大数据-201 数据挖掘 机器学习理论 - 决策树 局部最优 剪枝 分裂 二叉分裂

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

Scala 的trait

在Scala中&#xff0c;trait是一种特殊概念。trait可以作为接口&#xff0c;同时也可以定义抽象方法。类使用extends继承trait&#xff0c;在Scala中&#xff0c;无论继承类还是继承trait都用extends关键字。在Scala中&#xff0c; 类继承trait后必须实现其中的抽象方法&#x…...

vue3官方示例-简单的 markdown 编辑器。

官方示例不能直接粘贴使用&#xff0c;故自己补了些代码。方便初学者学习&#xff0c;节省时间&#xff0c;提高学习效率。 1、html代码&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta nam…...

Linux标准I/O库汇总整理

Linux标准I/O库&#xff08;Standard I/O Library&#xff09;是C标准库的一部分&#xff0c;提供了一系列用于文件输入输出的高级接口。这些接口通常比低级别的系统调用更易于使用&#xff0c;但也可能带来额外的性能开销。下面是Linux标准I/O库的汇总整理&#xff0c;包括常见…...

BGP路由优选+EVPN

BGP 的路由优选规则是一套多步决策链&#xff0c;用来确定在多个可行路由中选择最优的路由。BGP 是一种路径向量协议&#xff0c;通过这些优选规则&#xff0c;网络管理员可以控制数据流量的流向&#xff0c;确保网络的稳定性和效率。下面以一个实例来详细说明 BGP 的优选规则及…...

牛客练习赛131(未补)

A-小H学语文 题意&#xff1a;木板数量为m&#xff0c;想让mmh&#xff08;min)最大&#xff0c;找出这几块木板 分析&#xff1a;让木板从大到小排序&#xff0c;找到最大的体积&#xff0c;将之前的木板按序列输出 代码&#xff1a; #include<bits/stdc.h> using n…...

功能更新丨AI黑科技助燃VR全景新势能

随着VR全景市场需求不断扩大&#xff0c; 为更好地赋能合作商业务发展&#xff0c; 酷雷曼积极推进产品技术迭代&#xff0c; 融合VR虚拟现实和AI人工智能&#xff0c; 重磅推出6大AI黑科技&#xff0c; 让VR全景内容更丰富、创作更加高效&#xff01; 新功能怎么用&#…...

JavaCV学习第一课

1、 JavaCV [1] 是一款基于JavaCPP [2]调用方式&#xff08;JNI的一层封装&#xff09;&#xff0c;由多种开源计算机视觉库组成的包装库&#xff0c;封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算…...

Java第二阶段---16字符串---第一节 String

1.特性介绍 String 类位于 java.lang 包中&#xff0c;无需引入&#xff0c;直接使用即可。 String 类是由 final 修饰的&#xff0c;表示String 类是一个最终类&#xff0c;不能够被继承。 String 类构建的对象不可再被更改 示例 package com.cyx.string;public class Ex…...

<十六>Ceph mon 运维

Ceph 集群有故障了&#xff0c;你执行的第一个运维命令是什么&#xff1f; 我猜测是ceph -s 。无论执行的第一个命令是什么&#xff0c;都肯定是先检查Mon。 在开始之前我们有必要介绍下Paxos协议&#xff0c;毕竟Mon就是靠它来实现数据唯一性。 一&#xff1a; Paxos 协议 1…...

【网络安全初识】——互联网发展史

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络安全】 本专栏旨在分享学习网络安全的一些学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; ipconfig&#xff1a;显示当…...

Windows和Linux内存共享机制

Windows和Linux内存共享机制 引言1.Windows写操作读操作 2.Linux写操作读操作 3.Shell使用 tmux 运行 write 和 read说明 引言 在嵌入式开发领域&#xff0c;内存共享机制作为不同操作系统间实现高效数据交换的重要手段&#xff0c;尤其在对实时性和可靠性要求极高的环境中更为…...

windows@命令行中获取环境变量取值不展开取值(原值)

文章目录 命令行中获取环境变量取值获取不展开的值具体实现注解 封装为函数版本1版本2 命令行中获取环境变量取值 这里主要讨论获取未展开的值本来获取未展开的值应该作为默认选项,至少有合适的api方便直接调用,但是不知道微软怎么想的,让这个任务变得不直接 获取不展开的值 …...

如何找到多平台内容爆款进行批量复刻?

为了进一步扩大品牌社媒影响力&#xff0c;在消费者做决策的时候&#xff0c;能够第一时间出现在首选位置。持续在抖音、小红书、b站、公众号等各大社媒平台&#xff0c;产生连续的、正向的高质量品牌曝光&#xff0c;是非常重要的。如何进行这种多平台品牌影响力的提升呢&…...

【UML】- 用例图(结合银行案例解释其中的奥义)

目录 一、相关介绍 作用&#xff1a; 组成&#xff1a; 关系 二、使用具体银行案例解释各组成部分的含义 1、系统 2、参与者 3、用例 4、关联关系 5、扩展关系 6、泛化&#xff08;继承&#xff09;关系 三、成品 一、相关介绍 作用&#xff1a; 用例图可以描述一个…...

5个核心特性让嵌入式设备实现高效安全加密:tiny-AES-c轻量级加密库深度解析

5个核心特性让嵌入式设备实现高效安全加密&#xff1a;tiny-AES-c轻量级加密库深度解析 【免费下载链接】tiny-AES-c Small portable AES128/192/256 in C 项目地址: https://gitcode.com/gh_mirrors/ti/tiny-AES-c 在物联网设备和嵌入式系统的资源受限环境中&#xff0…...

libpcap BPF过滤器完全指南:构建高效网络数据包过滤系统

libpcap BPF过滤器完全指南&#xff1a;构建高效网络数据包过滤系统 【免费下载链接】libpcap the LIBpcap interface to various kernel packet capture mechanism 项目地址: https://gitcode.com/gh_mirrors/li/libpcap libpcap是一款强大的网络数据包捕获库&#xff…...

Phi-4-mini-reasoning效果对比:数学推理准确率 vs Llama3-8B实测分享

Phi-4-mini-reasoning效果对比&#xff1a;数学推理准确率 vs Llama3-8B实测分享 1. 模型介绍与部署 1.1 Phi-4-mini-reasoning简介 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员…...

SRS+WebRTC直播搭建实录:用安卓手机做推流器的5个关键步骤

SRSWebRTC直播搭建实录&#xff1a;用安卓手机做推流器的5个关键步骤 移动直播的轻量化趋势正在重塑内容创作生态。当专业摄像机与PC推流设备显得笨重时&#xff0c;一台随身携带的安卓手机配合SRSWebRTC技术栈&#xff0c;就能实现低于500ms延迟的直播推流方案。本文将拆解从设…...

VCS编译优化-lint实战指南

1. 为什么需要VCS lint静态检查&#xff1f; 刚入行做芯片设计那会儿&#xff0c;我最怕的就是仿真跑着跑着突然崩了&#xff0c;回头查半天发现是代码里有个端口宽度不匹配。这种低级错误浪费的时间&#xff0c;加起来可能都够我写完一个模块了。后来团队里的老司机给我安利了…...

Alpamayo-R1-10B商业应用探索:车企研发提效与算法验证加速方案

Alpamayo-R1-10B商业应用探索&#xff1a;车企研发提效与算法验证加速方案 1. 项目概述 Alpamayo-R1-10B是NVIDIA推出的自动驾驶专用开源视觉-语言-动作(VLA)模型&#xff0c;作为新一代自动驾驶研发工具链的核心组件&#xff0c;正在改变车企的研发流程。这个100亿参数规模的…...

如何通过LeaguePrank实现游戏界面个性化:打造独特的英雄联盟视觉体验

如何通过LeaguePrank实现游戏界面个性化&#xff1a;打造独特的英雄联盟视觉体验 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款专注于英雄联盟客户端界面自定义的开源工具&#xff0c;它通过安全的官方LCU…...

Joy-Con Toolkit:任天堂手柄全能管理解决方案

Joy-Con Toolkit&#xff1a;任天堂手柄全能管理解决方案 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 核心价值&#xff1a;重新定义手柄控制体验 Joy-Con Toolkit作为开源手柄管理领域的创新工具&#xff0…...

OpenClaw故障模拟:Qwen3-14b_int4_awq异常输入处理与恢复机制

OpenClaw故障模拟&#xff1a;Qwen3-14b_int4_awq异常输入处理与恢复机制 1. 为什么需要主动制造故障 去年冬天的一个深夜&#xff0c;我的OpenClaw自动化流程突然中断了。当时它正在帮我整理一批技术文档&#xff0c;却在处理某个特殊字符时直接"卡死"。这次经历让…...

Linux音频音量太小?别急着改代码,试试amixer这个终端神器

Linux音频音量调整终极指南&#xff1a;告别代码级修改&#xff0c;掌握amixer命令行艺术 当你在深夜调试语音识别项目时&#xff0c;突然发现树莓派录制的样本几乎听不见&#xff1b;或是准备录制技术教程视频时&#xff0c;Ubuntu系统的输出音量小得可怜——这种场景下&#…...