医疗网站建设网站,校园网站制作方法,猪八戒小程序开发报价,西安建网站的公司老孟导读#xff1a;Windows来了#xff0c;Mac、Linux、Web还远吗#xff1f; 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33982cd0f433 我们的使命是为开发人员提供一个开源#xff0c;高生产率的框架#xff0c;以便在任何平台上构建漂亮… 老孟导读Windows来了Mac、Linux、Web还远吗 本文翻译自https://medium.com/flutter/announcing-flutter-windows-alpha-33982cd0f433 我们的使命是为开发人员提供一个开源高生产率的框架以便在任何平台上构建漂亮的本机应用程序。到目前为止我们已经为Android和iOS提供了正式版本stable releases仅Google Play商店就提供了8个稳定版本和100,000多个应用。我们将继续扩大关注范围包括WebmacOS和Linux等其他平台。今天我们很高兴地宣布Flutter的另一个目标即Flutter对Windows的Alpha版本的支持。 Windows仍然是台式机和笔记本电脑设备的流行选择Microsoft报告了超过十亿台运行Windows 10的活动设备。我们自己的统计数据显示所有Flutter开发人员中有超过一半使用Windows因此它自然Flutter是的目标。本地桌面支持为Flutter开辟了许多激动人心的可能性包括改进的开发人员工具减少了新用户的负担当然应用程序可以通过单个代码库访问用户可能拥有的任何设备。 将Windows添加到Flutter 如我们的架构概述中所述Flutter是一种跨平台的UI工具包旨在允许在iOS和Android等操作系统之间重复使用代码同时还允许应用程序直接与基础平台服务交互。目的是使开发人员能够交付在不同平台上感觉自然的高性能应用程序在存在尽可能多的代码的同时拥抱它们存在的差异。Flutter的核心是引擎它支持所有Flutter应用程序所必需的。每当需要绘制新框架时引擎负责对合成场景进行栅格化。它提供Flutter核心API的低级实现包括图形文本布局文件和网络I / O可访问性支持插件体系结构以及Dart运行时和编译工具链。 我们添加到Flutter的每个新平台都会通过新服务扩展核心框架使其能够在该平台上发光。我们从使用Material Design以及基于触摸的以移动设备为中心的用户界面开始在Android和iOS上开始该界面旨在在两个移动平台上都达到像素完美。通过WebWindowsmacOS和Linux添加对台式机外形的支持带来了一整套全新的服务其中包括对输入侧的键盘鼠标鼠标滚轮和控制器的强大支持以及在这些方面适应甚至工作得最好的小部件。 Web和桌面应用程序随附的更大的屏幕尺寸。 此外每个新平台不仅会影响Flutter框架和引擎还会影响很多其他方面 工具链更新向CLI和IDE工具添加新目标在本例中为WindowsShell支持通过WM_*消息处理Windows的输入和通过ANGLE的输出使用斯基亚Skia以本机速度渲染到底层DirectX表面Runner每个项目都会获得针对受支持目标的Shell应用程序。对于Windows这是一个Win32 / C 程序可加载Flutter代码并在运行时执行它。如果需要可以在此处向应用程序添加本机代码。插件插件是Dart代码和该插件支持的每个平台的本机代码的混合。需要为在Windows上Flutter应用程序中编译的每个插件添加该本地代码。此Alpha版本提供了坚实的基础我们将在未来几个月中稳定该基础。借助对Windows 7及更高版本的支持我们希望这可以为喜欢冒险的开发人员提供一些入门知识。 探索一些示例应用 要查看Flutter对Windows的支持您可能想尝试一些我们创建的示例应用程序这些应用程序在Windows上使用我们新增的支持可以很好地运行。第一个是Flokk应用程序它是与gskinner.com的设计师和开发人员共同创建的。目的是通过创建创新的精美的Flutter桌面应用程序来证明Flutter已准备好用于桌面。Flokk是一款可与您的真实Google Contacts数据配合使用并在GitHub和Twitter上显示联系人活动的应用程序。 如果您想在Windows机器上使用Flokk应用程序则可以在GitHub上下载最新版本。如果您想了解gskinner如何构建此应用程序请参阅其出色的博客文章Flokk-我们如何使用Flutter构建桌面应用程序。 此外Flutter Gallery应用程序我们用于Flutter的所有事物的展示应用程序最近已完全重写以增加对台式机尺寸的支持。这使我们能够检查它是否可以在Web以及WindowsmacOS和Linux上正常运行。 库中的许多研究都展示了在使用Flutter设计自己的Windows应用程序时建议使用的不同应用程序风格的想法。当您找到自己喜欢的东西时该代码可在GitHub上找到。 Flutter for Windows入门 根据Windows安装说明开始安装Flutter SDK 。要定位Windows桌面首先需要安装Desktop docs中描述的工具。默认情况下Flutter假定您正在构建生产软件并且未配置为开发Windows应用程序。但是可以从命令行轻松解决 $ flutter channel dev
$ flutter upgrade
$ flutter config --enable-windows-desktop第一条命令将Flutter设置为使用实验质量的“ dev”通道而不是默认的“ stable”通道。这样您就可以使用仍在Alpha中的平台支持例如Windows。第二条命令下拉该通道上的最新位。第三个命令可在您的PC上进行Windows应用开发。 设置好之后每次使用Android Studio或Visual Studio Code的扩展支持或者从命令行创建新的Flutter应用程序时它都会创建一个Windows子文件夹。 如果您感到好奇请在Windows上运行默认应用程序如下所示 最后一旦创建了应用程序构建该应用程序将创建一个发布模式的本机EXE文件以及必要的支持DLL。到那时如果您想尝试在任何Windows 10计算机上运行新的Windows应用程序即使没有安装Flutter的计算机也可以按照以下步骤压缩必要的文件并运行。 Windows插件 即使我们刚刚发布Alpha版Flutter社区也已经在为Windows插件进行开发。这里有一些 url_launcher从您的应用程序在浏览器中启动URLpath_provider在用户的机器上找到指向特殊方向的路径例如Document或tempshared_preferences保持用户首选项在应用程序会话之间的磁盘上序列化biometric_storage通过生物识别技术加密的存储flutter_audio_desktop从桌面应用播放音频使用这些插件的好处是它们中的大多数还支持其他Flutter平台这使您可以将应用定位到AndroidiOSWeb等以及Windows。此外虽然pub.devDart和Flutter的软件包管理器上约有三分之一的可用软件包是具有特定于平台的代码的插件但大多数不是。例如许多最高质量和最常用的软件包是Flutter Favorite程序的一部分并且大多数都在Windows上运行。如果要查看在Windows上运行的软件包的完整列表可以在pub.dev上运行此查询。 与Windows互操作 如果您想为Windows构建自己的插件则可以。进入开发人员通道并为计算机启用Windows后可以使用以下命令开始 $ flutter create --template plugin --platforms Windows hello_plugin届时您将能够在插件项目中将Flutter代码添加到lib子文件夹中并将Windows代码添加到windows子文件夹中。您将使用Platform Channels在两个堆栈之间进行通信这实际上是Dart和C 代码之间传递的消息。有关此示例的精心制作请参见url_launcher实现。 但是平台通道并不是与Windows互操作的唯一选择。如果愿意可以使用Dart FFI外部功能接口加载库并调用C样式的API例如Win32 API。与使用平台通道的url_launcher不同path_provider插件是使用FFI实现的如您在GitHub repo中所见。FFI无需在Dart和C 之间来回切换而是允许您编写代码以直接导入所需的API。例如以下是用于调用MessageBox API的代码 typedef MessageBoxNative Int32 Function(IntPtr hWnd, PointerUtf16 lpText, PointerUtf16 lpCaption,Int32 uType
);typedef MessageBoxDart int Function(int hWnd, PointerUtf16 lpText, PointerUtf16 lpCaption, int uType
);final user32 DynamicLibrary.open(user32.dll);final win32MessageBox user32.lookupFunctionMessageBoxNative, MessageBoxDart(MessageBoxW);void showMessageBox(String message, String caption) win32MessageBox(0, // No owner windowUtf16.toUtf16(message), // MessageUtf16.toUtf16(caption), // Window title0 // OK button only);...// call just like any other Dart function
showMessageBox(Test Message, Window Caption);
view rawmbox.dart hosted with ❤ by GitHub此代码不会产生在平台通道之类的两个线程之间进行转换的开销。FFI包括对许多不同种类的API的支持包括Win32WinRT和COM。但是在运行并包装整个基于C的Windows API之前请检查win32插件该插件已经可以很好地做到这一点。实际上path_provider插件本身是使用win32插件实现的。有关win32插件如何开发以及如何工作的详细信息请查看博客文章Dart FFI的Windows乐趣。 Windows资源Flutter 无论您在Flutter for Windows之旅中的任何地方都应确保阅读flutter.dev上的桌面文档其中包括最新详细信息。另外您将需要熟悉 Flutter代码实验室以编写WindowsmacOS和Windows桌面目标应用程序其中包括用于真实场景的代码例如使用OAuth进行身份验证访问GitHub API和使用GraphQL。或者对于在Windows上运行的Flutter桌面代码的另一个很好的例子请查看照片搜索示例。 它使用标准的Windows文件打开对话框树视图小部件拆分器小部件并将结果与真实世界的REST API集成在一起。 对于其他有用的面向桌面的小部件我们建议使用菜单栏插件NavigationRail小部件和DataTable小部件。您可能还对InteractiveViewer小部件感兴趣该小部件具有完整的桌面支持可通过鼠标手势来平移和缩放子小部件。 可以探索的另一组有用的小部件是SyncFusion中的那些它们已经在Windows开发社区中广为人知。它们提供了广泛的企业质量小部件用于创建图表仪表数据网格等。 这些小部件具有社区和企业许可证因此您可以找到最适合您的项目的工具。 适用于Windows的Flutter 除了Windows通常是Flutter桌面的软件包和插件外Flutter开发人员还一直在开发针对Windows的出色应用例如Invoice Ninja的实验性构建 Invoice Ninja是一家依靠Flutter带来收入的发票公司。他们的目标是今天生产中的Android和iOS并具有基于Web的演示供您尝试但也期待提供桌面版本。 “在过去的Ninja中我们一直在努力仅支持Web和移动设备一次只能维护三个单独的代码库。借助Flutter以及最近的Flutter Desktop我们已经能够使用单个代码库为每个主要平台构建应用程序。我们不仅可以从根本上获得应用程序的免费桌面版本而且还拥有所有应用程序中最好的性能” —Invoice Ninja 联合创始人Hillel Coren 如果您对实现可在移动和台式机上运行的现实世界中可产生收入的Flutter应用感兴趣则可在GitHub上找到源代码。 Aartos是另一家制造出色产品的公司其中包括带有Flutter编写的具有多平台客户端的实时无人机检测系统。这是在移动客户端旁边运行的Windows客户端的早期版本 视频地址https://youtu.be/mGvPCT7Vc2Y 这两个针对iOS和Windows的版本共享完全相同的代码库。 如果您是经验丰富的Flutter开发人员并且发现自己在Flutter的不同版本之间进行切换例如一个版本用于交付生产型移动应用程序另一个版本用于测试Windows alpha那么您可能会喜欢Flutter版本管理器该版本管理器现在带有Windows GUI您可以下载该版本。 视频地址https://youtu.be/_WA71wSt2ww 该工具是开源的因此您可以亲自了解Leo如何使其看起来如此出色。 下一步是什么 现在我们已经发布了Alpha版我们的注意力转移到完成功能集和稳定产品的发布上。作为一个开源项目您可以在GitHub网站上关注我们的beta测试进展尚需完成的其他工作包括可访问性全球化和本地化增强的键盘和文本处理对命令行参数的支持等等。 除了支持经典的Win32 API外我们还在试验基于UWP的Flutter shell版本该版本使Flutter可以访问更广泛的基于Windows的设备包括Xbox。作为该实验的一部分本周我们向Windows应用商店发布了基于UWP的Flutter Gallery版本。 以下屏幕快照显示了在Xbox上运行的基于UWP的Flutter Gallery 这是在Windows 10X模拟器上运行的双屏Windows设备上运行的同一应用程序 您可以在GitHub上了解有关Flutter for UWP的进度的更多信息。 摘要 在此版本中我们将Flutter的功能引入Windows它具有声明式可组合的反应式的框架可提高开发人员的工作效率并具有适应性的Material规范实现因此您还可以使应用外观和感觉达到您希望的方式作为Flutter的全套开发和调试工具。完成后您的应用程序将编译为本机64位代码您可以将其打包并带到其他Windows计算机上就像其他任何本机应用程序一样。最后您可以使用相同的代码库来创建针对AndroidiOSWebmacOS和Linux的应用程序。 如果您想开始使用Flutter构建Windows应用程序我们希望收到您的反馈如果您希望利用Windows的专业知识来构建流行插件的Windows实现或者为Flutter构建一些以Windows为中心的工具也许是一个CLI它可以从flutter build windows命令的输出中创建MSIX ……那也欢迎您 有了Flutter对Windows的新支持您将要构建什么 版权声明本文为原创依据 CC BY-SA 4.0 许可证进行授权转载请附上出处链接及本声明。 交流 交流 老孟Flutter博客330个控件用法实战入门系列文章http://laomengit.com 欢迎加入Flutter交流群微信laomengit、关注公众号【老孟Flutter】