Flutter 3.16 中带来的更新

这篇具有很好参考价值的文章主要介绍了Flutter 3.16 中带来的更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flutter 3.16 中带来的更新

1. 概述

2. 框架更新

2.1 Material 3 成为新默认

从此版本开始,Material 3 成为新的默认主题。你可以通过在 MaterialApp 主题中指定 useMaterial3: false 来选择不使用 Material 3,但 Material 2 最终将被弃用并删除。

你仍然可以通过在主题中指定来选择退出 M3 版本的 Material 库MaterialApp,但 Material 2 最终将被弃用并删除。

此外,某些组件不仅可以更新,还需要全新的实现。因此,当您看到它作为 Material 3 运行时,您的 UI 可能看起来有点奇怪。要解决此问题,请手动迁移到新的组件,例如 NavigationBar。

有关更多详细信息,请查看:https://github.com/flutter/flutter/issues/91605

演示应用 程序允许你尝试所有组件。该演示支持切换,useMaterial3以便您可以比较更改。

2.2 支持 Material 3 动画

Material 3 动画的改进包括添加了 Easing 和 Durations 类。Material 2 的曲线已被重命名为包含 “legacy” 的词,最终将被弃用和删除。

2.3 TextScaler

为了支持 Android 14 的 非线性字体缩放功能,新的 TextScaler 类取代了 Text.textScaleFactor 属性。

2.4 SelectionArea 更新

Flutter 的 SelectionArea 已更新,支持使用鼠标进行单击或双击,以及在触摸设备上长按的原生手势。

  • 单击:在单击的位置设置折叠选区。
  • 双击:选择单击位置的单词。
  • 双击 + 拖动:扩展单词块中的选择范围。

Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端

  • 长按+拖动:扩展单词块中的选择范围。

Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端

2.5 MatrixTransition 动画

新的 MatrixTransition 组件允许在创建动画过渡时进行变换。根据当前动画值,你可以提供应用于子窗口组件的矩阵变换,以创建类似于以下 GIF 中的效果。

import 'dart:math';

import 'package:flutter/material.dart';

void main() => runApp(const MatrixTransitionExampleApp());

class MatrixTransitionExampleApp extends StatelessWidget {
  const MatrixTransitionExampleApp({super.key});

  
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MatrixTransitionExample(),
    );
  }
}

class MatrixTransitionExample extends StatefulWidget {
  const MatrixTransitionExample({super.key});

  
  State<MatrixTransitionExample> createState() =>
      _MatrixTransitionExampleState();
}

class _MatrixTransitionExampleState extends State<MatrixTransitionExample>
    with TickerProviderStateMixin {
  late AnimationController _controller;
  late Animation<double> _animation;

  
  void initState() {
    super.initState();
    _controller = AnimationController(
      duration: const Duration(seconds: 2),
      vsync: this,
    )..repeat();
    _animation = CurvedAnimation(
      parent: _controller,
      curve: Curves.linear,
    );
  }

  
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: MatrixTransition(
          animation: _animation,
          child: const Padding(
            padding: EdgeInsets.all(8.0),
            child: FlutterLogo(size: 150.0),
          ),
          onTransform: (double value) {
            return Matrix4.identity()
              ..setEntry(3, 2, 0.004)
              ..rotateY(pi * 2.0 * value);
          },
        ),
      ),
    );
  }
}

见 https://dartpad.dev/?channel=beta&id=c82be58209035722f2cc7d78da855329

2.6 滚动更新

在 Flutter 3.13 中首次发布了二维滚动基础设施后,此版本带来了更多的功能和改进。在 Flutter 3.16 中,2D 基础设施现在支持 KeepAlive 组件,以及默认的焦点遍历和隐式滚动。构建在基础设施之上的 2D 滚动组件将自动采用这种支持。关于在 2D 基础设施上构建的全面指南,请查看 Flutter Build Show 的最新一集。

在 3.13 版本发布后不久,发布了 two_dimensional_scrollables 包。这个包由 Flutter 团队维护,并包含了基于框架基础设施构建的第一个 2D 滚动组件 —— TableView。自初始发布以来,已经添加了更多的装饰和样式支持,并进行了额外的错误修复。

  • Flutter 二维滚动

2.7 在编辑菜单中添加附加选项

在本机 iOS 上,用户现在可以选择文本并启动提供多种标准服务的共享菜单。在此版本中,我们添加了查找、搜索和共享选项。

Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端

2.8 PaintPattern 添加到 flutter_test

在 flutter_test 包中,新增的 PaintPattern 类允许你验证像 CustomPainters 和 Decorations 这样的组件对画布进行的绘制调用(在单元测试中使用)。

以前,需要一个金色文件来验证是否绘制了正确的颜色和矩形,但现在你可以使用 PaintPattern。以下示例验证 MyWidget 是否在画布上绘制了一个圆:

expect(
  find.byType(MyWidget),
  paints
    ..circle(
      x: 10,
      y: 10,
      radius: 20,
      color: const Color(0xFFF44336),
    ),
);
// Multiple paint calls can even be chained together.
expect(
  find.byType(MyWidget),
  paints
    ..circle(
      x: 10,
      y: 10,
      radius: 20,
      color: const Color(0xFFF44336),
    ),
    ..image(
      image: MyImage,
      x: 20,
      y: 20,
    ),
);

这个 API 之前存在于框架测试文件的深处,我们注意到一些开发者发现它非常有用,他们甚至将其复制到了自己的项目中。如果你也这样做了,那么在升级到 Flutter 3.16 后,你可以从你的项目中删除这个副本。

3. 引擎更新(Impeller)

在此版本中,Impeller 引擎 在 Android 上已准备好在稳定通道上预览反馈。自今年初以来,Flutter 团队一直在 Impeller 的 Vulkan 后端上努力工作,这个预览包括收集关于 Impeller 在 Vulkan-capable 设备上的特性的反馈。

除了专注于 Vulkan 后端外,自今年初以来,团队还对 Impeller 在 Android 和 iOS 上的文本性能进行了许多改进。

4. 平台

4.1 Android

  • 鼠标滚轮支持:在优化 Wonderous 以满足 Android 的大屏幕指南时,Flutter团队 发现的一个问题是鼠标滚轮在平板电脑或可折叠设备上的工作效果不佳。

Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端
Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端

  • 预测性后退导航:Android 14 发布包含了预测性后退手势功能,允许你使用设备的后退手势在当前屏幕后面“窥视”主屏幕。此更新将预测性后退手势带到了 Flutter!

Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端

4.2 iOS

现在可以使用 Flutter 来定位一些 iOS 应用扩展。这意味着你可以使用 Flutter 组件来绘制某些类型的 iOS 应用扩展的 UI。

Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端

4.3 Web

Chrome DevTools 上的 Flutter 时间线事件

Flutter 时间轴事件现在显示在 Chrome DevTools 的性能面板中。

Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端文章来源地址https://www.toymoban.com/news/detail-756447.html

4.4 游戏

  • 参考《Flutter 休闲游戏工具包的重大更新》
    Flutter 3.16 中带来的更新,Dart语言与Flutter框架开发笔记,前端、桌面端、移动端、UI、构建工具,Flutter,Dart,Android,iOS,跨端

到了这里,关于Flutter 3.16 中带来的更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Dart 3.2 更新,Flutter Web 的未来越来越明朗

    参考原文:https://medium.com/dartlang/dart-3-2-c8de8fe1b91f 本次跟随 Flutter 3.16 发布 的 Dart 3.2 ,包含有:私有 final 字段的非空改进、新的 interop 改进、对 DevTools 中的扩展支持、以及对 Web 路线图的更新,包括对 Wasm 的Web 组件支持。 最重要的就是 Wasm 的Web 组件支持。 自 Dart 2.12 发布

    2024年02月05日
    浏览(34)
  • Flutter Dart语言(05)异步

    该系列教程主要是为有一定语言基础 C/C++的程序员,快速学习一门新语言所采用的方法,属于在C/C++基础上扩展新语言的模式。 在Dart语言中,虽然没有像其他语言(如Java、C++、Python)中的传统多线程概念,但它采用了异步(asynchronous)编程模型来处理并发任务。Dart使用asy

    2024年02月14日
    浏览(39)
  • 【Flutter】下载安装Flutter并使用学习dart语言

    安装flutter, 并使用flutter内置的dartSDK学习使用dart语言。 编辑器: Android Studio fluuter 版本 : flutter_windows_3.13.1 内置dartSDK : 3.1.0 dart路径路径: flutter安装路径bincachedart-sdk flutter下载地址 官网的下载描述蛮详细的,直接用就行。 Android Studio 需要到官网下载安装包。 如果你c盘容

    2024年02月09日
    浏览(45)
  • Flutter Dart语言(04)库操作

    该系列教程主要是为有一定语言基础 C/C++的程序员,快速学习一门新语言所采用的方法,属于在C/C++基础上扩展新语言的模式。 引入代码如下所示: 一般从官方网站:Page 1 | Top packages中 搜索需要的第三方库,打开项目中的配置文件,名为:pubspec.yaml,找到dependencies选项,这

    2024年02月14日
    浏览(42)
  • flutter的引擎,Dart语言概括

    Dart是谷歌开发的, 类型安全的 , 面向对象 的编程语言,被应用于 Web、服务器、移动应用和物联网 等领域。 dart是谷歌在2011年推出的编程语言。谷歌希望使用dart来取代JavaScript。谷歌是一个颠覆式创新公司,谷歌退出golang是为了取代java,c++。谷歌退出flutter就是为了取代R

    2023年04月22日
    浏览(44)
  • 【Flutter 开发实战】Dart 基础篇:List 详解

    嗨,各位朋友们,欢迎来到这篇博客!今天我们将一起踏入 Dart 语言的神奇世界,深入了解 Dart 中的 List 类型。不用担心,我会尽可能用最通俗易懂的语言,让你对 List 有一个更深刻的理解。 List - 让数据变得有趣! 在 Dart 语言中,List 就像一个神奇的盒子,可以放进去各种

    2024年01月21日
    浏览(50)
  • flutter开发实战-jsontodart及 生成Dart Model类

    flutter开发实战-jsontodart及 生成Dart Model类。 在开发中,经常遇到请求的数据Json需要转换成model类。这里记录一下Jsontodart生成Dart Model类的方案。 在开发中经常用到将json转成map或者list。通过json.decode() 可以方便 JSON 字符串转为 List/Map 如 转换成Map 在自定义类中经常将请求封装,

    2024年02月15日
    浏览(37)
  • 【Flutter 开发实战】Dart 基础篇:条件循环表达式

    Dart 是一门强大的编程语言,其条件和循环表达式在编写灵活、高效代码中起着关键作用。本文将深入介绍 Dart 中的条件表达式、循环表达式、以及如 for 、 while 、 do...while 、 break 、 continue 等内容,旨在为初学者提供清晰的指导。 Dart 中的条件表达式主要通过 if 语句

    2024年02月01日
    浏览(53)
  • flutter开发实战-长链接WebSocket使用stomp协议stomp_dart_client

    flutter开发实战-长链接WebSocket使用stomp协议stomp_dart_client 在app中经常会使用长连接进行消息通信,这里记录一下基于websocket使用stomp协议的使用。 1.1 stomp介绍 stomp,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件

    2024年02月13日
    浏览(47)
  • 【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系?

    【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系? 👏🏻 正在学 Flutter 的同学,你好! 😊 本专栏是解决 Flutter 面试过程中可能出现的问题,而进行汇总整理的。一个问题一篇文章,尽可能详细解答,满足面试需求。 🔍 想解决开发中的零散问题?碎片化教程 👉 Flutte

    2024年02月22日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包