Flutter

维基百科,自由的百科全书
跳转到导航 跳转到搜索
Flutter
File:Google-flutter-logo.svg
原作者Google
开发者Google与社区
首次发布Alpha (v0.0.6) / 2017年5月,​9年前​(2017-05[1]
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    源代码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    编程语言Dart[2]
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      平台AndroidiOSGoogle Fuchsia、Web平台、WindowsmacOSLinux
      类型应用框架
      许可协议
        Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
        网站flutter.dev

        Flutter是一个由谷歌开发的开源跨平台应用软件开发工具包,用于为AndroidiOSWindowsmacOSLinux Desktop、Google Fuchsia开发应用[3]

        Flutter第一个版本支持Android操作系统,开发代号称作“Sky”。 它于2015年4月的Flutter开发者会议上被公布[4],宣称其目标为实现120FPS渲染性能[5]。在上海Google Developer Days的主题演讲中,Google宣布了Flutter Release Preview 2,这是Flutter 1.0之前的最后一个重要版本。2018年12月4日,Flutter 1.0在Flutter Live活动中发布,是该框架的第一个“稳定”版本。[6]2019年12月11日,在Flutter Interactive活动上发布了Flutter 1.12,宣布Flutter是第一个为环境计算设计的UI平台[7]。2022年5月12日,在 Google I/O 2022 发布了 Flutter 3[8],正式支持了 Windows、macOS、Linux 等操作系统。

        框架组织[编辑]

        Flutter的主要组成部分包括:

        Dart平台[编辑]

        Flutter是使用Dart语言编写,并利用该语言的许多高级功能。[10]

        WindowsmacOSLinux上,Flutter在Dart虚拟机中运行,该虚拟机具有即时编译执行引擎。在编写和调试应用时,Flutter使用即时编译功能进行“热重载”(Hot Reload),可以将对源文件的修改注入正在运行的应用中。Flutter通过支持有状态的热重载来扩展此功能,在大多数情况下,对源代码的更改可以立即在运行的应用中反映出来,而无需重新启动或丢失任何状态。[11]Flutter实现的此功能已广受赞誉。

        Flutter应用的发布版本在Android和iOS上都进行了提前(AOT, Ahead Of Time)编译[12],使Flutter在移动设备上可以高性能地运行。

        Flutter 引擎[编辑]

        Flutter的引擎主要使用C++开发,通过Google的Skia图形库提供底层渲染支持,亦提供平台相关的SDK,例如AndroidiOS[10]。Flutter引擎是用于托管Flutter应用的可移植的运行环境。它实现了Flutter的核心库,包括动画和图形、文件和网络I/O、可访问性支持、插件架构以及Dart运行环境和编译工具链。大多数开发人员将通过Flutter框架与Flutter进行交互,该框架提供了一个现代、响应式的框架,以及一组丰富的平台、布局和基础组件。

        基础库[编辑]

        基础库由Dart编写,提供了用Flutter构建应用所需的基本的类和函数,例如与引擎通讯的API[13]

        组件[编辑]

        Flutter是通过组织、创建不同的组件完成用户界面设计的。在Flutter中,一个组件代表用户界面中不可变的一部分;包括文本、多边形以及动画在内的所有图形都是用组件创建的。复杂的组件由简单的组件结合而成。

        定制化设计风格的组件[编辑]

        Flutter框架包含了两套符合特定设计语言组件。 称作Material Design的组件实现的是同名的谷歌设计语言,称作Cupertino的组件实现苹果公司iOS的人机接口指南(Human interface guidelines)[10][14][15][16]

        第三方扩展[编辑]

        Flutter 使用 pub页面存档备份,存于互联网档案馆) 管理第三方依赖包。在项目的 pubspec.yaml 中,开发者可以指定每个依赖的版本范围,或者固定版本号。

        IDE[编辑]

        Flutter支持使用 Visual Studio CodeAndroid Studio ,需要安装 Flutter 插件和 Dart 插件。

        在中国大陆,由于防火长城的存在,需要切换软件源才能正常安装Flutter[17]

        Hello World 示例[编辑]

        一个Flutter中的Hello World程序如下所示:

        import 'package:flutter/material.dart';
        
        void main() => runApp(HelloWorldApp());
        
        class HelloWorldApp extends StatelessWidget {
          @override
          Widget build(BuildContext context) {
            return MaterialApp(
              title: 'Hello World App',
              home: Scaffold(
                appBar: AppBar(
                  title: const Text('Hello World App'),
                ),
                body: const Center(
                  child: Text('Hello World'),
                ),
              ),
            );
          }
        }
        

        参考文献[编辑]

        1. ^ Chris Bracken. Release v0.0.6: Rev alpha branch version to 0.0.6, flutter 0.0.26 (#10010) · flutter/flutter. GitHub. [2018-08-08]. (原始内容存档于2019-02-05). 
        2. ^ FAQ - Flutter. [2018-08-08]. (原始内容存档于2018-08-09). 
        3. ^ Google’s "Fuchsia" smartphone OS dumps Linux, has a wild new UI. Ars Technica. [2018-04-03]. (原始内容存档于2019-09-26). 
        4. ^ Sky: An Experiment Writing Dart for Mobile (Dart Developer Summit 2015). [2020-06-12]. (原始内容存档于2020-06-14). 
        5. ^ Amadeo, Ron. Google’s Dart language on Android aims for Java-free, 120 FPS apps. Ars Technica. 1 May 2015 [2018-04-03]. (原始内容存档于2015-05-06). 
        6. ^ Speed Up Native Development As Google Flutter Comes Out Of Beta. Appetiser Apps. [2018-12-21]. (原始内容存档于2019-03-12) (English). 
        7. ^ Flutter: the first UI platform designed for ambient computing. Flutter blog. [2019-12-11]. (原始内容存档于2019-12-11) (English). 
        8. ^ Sneath, Tim. Introducing Flutter 3. Flutter. 2022-05-11 [2022-07-05] (English). 
        9. ^ Flutter Engine Source Code. GitHub. [2022-03-03]. (原始内容存档于2022-05-10). 
        10. ^ 10.0 10.1 10.2 Technical Overview - Flutter. flutter.io. [2017-12-13]. (原始内容存档于2017-12-13) (English). 
        11. ^ Lelel, Wm. Why Flutter Uses Dart. HackerNoon. 26 February 2018 [5 December 2018]. (原始内容存档于2019-11-16). 
        12. ^ stephenwzl. Flutter’s Compilation Patterns. ProAndroidDev. 2018-08-01 [2018-12-06]. (原始内容存档于2020-06-09). 
        13. ^ foundation library - Dart API. [2017-12-13]. (原始内容存档于2017-12-13) (English). 
        14. ^ Material Design Widgets - Flutter. flutter.dev. [2017-12-13]. (原始内容存档于2020-06-16) (English). 
        15. ^ Cupertino (iOS-style) Widgets - Flutter. flutter.dev. [2017-12-13]. (原始内容存档于2020-06-16) (English). 
        16. ^ Human Interface Guidelines. developer.apple.com. [2019-10-08]. (原始内容存档于2020-11-28) (English). 
        17. ^ 存档副本. [2024-04-09]. (原始内容存档于2024-05-21). 

        外部链接[编辑]

        • Module:Official_website第90行Lua错误:attempt to index field 'wikibase' (a nil value)

        .