Flutter Tips - Flutter 1.9 发布

585 阅读3分钟

  在9月10日上海举办Google Developer Days上,Flutter team发布了最新的稳定版本:Flutter 1.9。此版本是包含了大量的更新,来自100多个贡献者的超过1,500个PR。从支持macOS CatalinaiOS 13到改进的工具支持,以及新的Dart语言功能和新的Material小部件。

  还宣布了Flutter web支持的一个重要里程碑,将FlutterWeb支持成功集成到主要的Flutter存储库中,允许开发人员使用相同的代码库编写移动,桌面和Web

支持macOS Catalina和iOS 13

  随着Apple准备发布最新版本的macOS CatalinaFlutter team更新了端到端的工具体验,以确保它在CatalinaXcode 11上运行良好。这包括添加对新Xcode构建系统的支持,在整个工具链中实现64位支持,并简化平台依赖性。

  随着iOS 13的推出,Flutter 1.9包括iOS 13可拖动工具栏的实现,包括长按和右拖,并支持振动反馈。iOS黑暗模式的工作也正在进行中,已经合并了许多拉取请求。

  在最新的开发版本中,可以启用对Bitcode的实验性支持,BitcodeApple的独立于平台的编译程序的中间表示。以Bitcode的形式提交您的应用程序允许Apple在未来重新提交时优化二进制文件,并打开Flutter可能支持平台的大门,例如需要Bitcode提交应用程序的watchOStvOS

新的Material小部件

  Material组件和功能也在Flutter 1.9中得到升级。

ToggleButtons

  ToggleButtons小部件将一组ToggleButton小部件捆绑在一起,通常由一组IconText小部件组成,以形成一组具有完全可自定义外观和行为的按钮。

ToggleButtons(
                borderColor: Colors.blueGrey,
                borderWidth: 10,
                selectedBorderColor: Colors.blue,
                splashColor: Colors.yellow,
                borderRadius: BorderRadius.circular(10),
                children: [
                  Icon(Icons.ac_unit),
                  Icon(Icons.call),
                  Text('cake'),
                ],
                onPressed: (int index) {
                  setState(() {
                    for (int buttonIndex = 0; buttonIndex < isSelected3.length; buttonIndex++) {
                      if (buttonIndex == index) {
                        isSelected3[buttonIndex] = true;
                      } else {
                        isSelected3[buttonIndex] = false;
                      }
                    }
                  });
                },
                isSelected: isSelected3,
              )

ColorFiltered

  ColorFiltered小部件允许重新着色子小部件树。这有很多用途,例如,为用户处理色盲可访问性问题。

MaterialApp(
        title: title,
        theme: ThemeData(primarySwatch: Colors.blue),
        home: ColorFiltered(
          colorFilter: ColorFilter.mode(Colors.red, mode),
          child: Scaffold(
            appBar: AppBar(title: Text(title)),
            body: Center(
              child: ListView(
                children: (List.from(BlendMode.values)..sort((a, b) => a.toString().compareTo(b.toString())))
                    .map(
                      (m) => ListTile(
                        title: Text(m.toString()),
                        selected: m == mode,
                        onTap: () => setState(() => mode = m),
                      ),
                    )
                    .toList(),
              ),
            ),
          ),
        ),
      );

全球语言支持

  还增加了对从南非荷兰语到祖鲁语的24种新语言的支持。

工具链改进

  在这个版本中,新项目分别默认为SwiftKotlin。由于许多软件包都是使用Swift编写的,因此将其作为默认语言会删除将这些软件包添加到使用默认选项创建的应用程序的手动工作。 由于Apple在最近的版本中已经完成的应用程序细化工作,Swift动态库不再需要包含在iOS 12.2或更高版本的分发包中,与先前版本相比减少了Swift应用程序的大小。

Flutter web

  由于Web支持已合并到主要的flutter存储库中,因此不推荐使用flutter_web存储库,这意味着如果拥有来自主通道或开发通道的Flutter的最新版本,可以通过运行flutter run -d chrome来使用最新的Flutter实验版本`。

  当创建项目时,Flutter现在通过最小的web/index.html文件创建一个Web运行器,该文件引导Web编译的Flutter代码。使用该文件,可以使用Flutter CLI工具或IDE插件在Web上编辑和运行Flutter应用程序。

  以上是VS Code的屏幕截图,其中为Flutter启用了Web支持。请注意web/ index.html文件以及下拉列表,可以选择Chrome作为目标开发设备。 使用Flutter支持Web输出仍处于早期阶段,但此版本代表了使用FlutterWeb开发提供生产支持的重要一步。