从Google IO学习Flutter

Dart语法持续进化

Sound null safety:可以理解为如果声明为可为空的属性,需要判断是否为空;如果声明为不可为空的属性,就不需要判断是否为空,一定非空。示例代码如下:

scss 复制代码
void main() {
  printAge(null);
  printAge(12);
}

void printAge(int? age) {
  if (age != null) {
    print('age is $age');
  } else {
    print('age is null');
  }
} 

Dot Shorthand:允许你在上下文已知的情况下引用枚举值,而无需重复类型。这意味着更少的输入、更少的错误以及更简洁的代码。可以理解为推断出类名称。示例代码如下:

yaml 复制代码
 body: SafeArea(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[...],),)

简写成:

yaml 复制代码
 body: SafeArea(
        child: Column(
          mainAxisAlignment: .spaceBetween*,
          crossAxisAlignment: .stretch,
          children: <Widget>[...],),)

flutter和dart都升级到了最新的版本,执行命令行中添加--enable-experiment=dot-shorthands也不能正常执行。 Dot Shorthand仍处于实验阶段,在稳定的Flutter版本中不受支持。

null aware elements:尽可能在集合文字中使用可空感知元素。 示例代码如下:

scss 复制代码
void main() {
  print(f(null));
  print(f('key'));

}

f(String? key) => {?key: "value"};

示例结果:

css 复制代码
{}
{key: value}

Property Editor

Flutter插件的85.3版本才增加Add Property Editor,但是Android Studio中的plugins中最新的版本是85.2.2,等85.3版本发布出来之后我们才能体验。 85.3

  • Add Property Editor side panel (#7957)
  • Support removed for IDEA 2024.1 (Koala) and 2024.2 (Ladybug) (#8073)
  • Various cleanups including migrating slow operations to non-blocking calls (#8089)

平台线程和UI线程合并

Impeller Android默认渲染器

从Flutter 3.29版本开始,Flutter开始使用Impeller作为Android的主渲染器在Android API28以上的设备上,在28以及以下的设备上继续使用Skia。

Flutter web with Hot reload

Flutter web终于实现了热重载。

Canonical开发多窗口

AI

AI已来,未来已来。AI赋能的应用将会发布到各个平台。

参考资料

docs.flutter.dev/release/rel...

dart.dev/null-safety

www.youtube.com/watch?v=v6R...

dart.dev/tools/linte...

plugins.jetbrains.com/plugin/9212...

相关推荐
九丝城主10 小时前
2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--上篇
服务器·flutter·macos·vmware
瓜子三百克15 小时前
七、性能优化
flutter·性能优化
恋猫de小郭1 天前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
小蜜蜂嗡嗡1 天前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
瓜子三百克1 天前
十、高级概念
flutter
帅次2 天前
Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
flutter·macos·ios·objective-c·iphone·swift·safari
小蜜蜂嗡嗡2 天前
flutter flutter_vlc_player播放视频设置循环播放失效、初始化后获取不到视频宽高
flutter
孤鸿玉2 天前
[Flutter小技巧] Row中widget高度自适应的几种方法
flutter
bawomingtian1232 天前
FlutterView 源码解析
flutter
程序员鱼皮2 天前
用 AI 制作超长视频,保姆级教程!
google·程序员·aigc