如何开始使用您的第一个Flutter应用程序
介绍
Flutter 是谷歌创建的一个开源框架,专注于跨平台应用的创建。 Flutter 主要针对 iOS 和 Android,但也越来越多地添加对桌面平台的支持。
注意: Flutter 应用是使用 Dart 编程语言构建的。 如果您是 Dart 的新手,您可能希望首先 获得该语言的一般概述 。
在本文中,您将创建您的第一个 Flutter 应用程序并探索生成的代码。
先决条件
要完成本教程,您需要:
- 下载并安装 Flutter。
- 下载并安装Android Studio 或 Visual Studio Code。 Android Studio 提供了一个集成的、功能丰富的 IDE,并支持 Flutter。 Visual Studio Code 提供更轻量级但功能更强大的支持。
- 建议为您的代码编辑器安装插件: 为 Android Studio 安装了 Flutter 和 Dart 插件。 为 Visual Studio Code 安装了 Flutter 扩展。
本文最初使用 Flutter 1.2.x 编写。 它已更新为支持 Flutter 1.22.2。
第 1 步——创建一个新的 Flutter 项目
一旦你安装了 Flutter 并安装了适当的依赖项(Android SDK 或 XCode,取决于你的机器),你现在可以创建一个新的 Flutter 项目。
首先,打开终端窗口,导航到要启动项目的目录,然后运行以下命令:
flutter create hello_flutter
接下来,切换到项目目录:
cd hello_flutter
然后,使用您选择的代码编辑器打开此项目。
第 2 步——启动项目
请参阅 在 Visual Studio Code 或 Android Studio 中运行代码的文档。
例如,使用 Visual Studio Code,打开 Run and Debug:
然后,选择飞镖和颤振从下拉列表中,然后选择hello_flutter配置。 在状态栏中指定模拟器(Web、iOS 或 Android)。 然后按 Start Debugging(类似于“播放按钮”)运行应用程序。
然后,您将在模拟器或浏览器中观察演示应用程序:
Android Studio 将要求您指定 Device 并选择配置。
第三步——探索代码
你已经创建了你的第一个 Flutter 应用程序! 并在模拟器中运行它! 在本节中,您将阅读一些代码。
注意: flutter 生成的起始代码是 Flutter 官方代码库的一部分,可在以下许可证 下使用 。
现在,在您的代码编辑器中打开 lib/main.dart。
MyApp
文件的第一部分定义 MyApp。 此类扩展 StatelessWidget:
lib/main.dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
// ...
我们首先从 Flutter 导入 Material 包。 这就是为我们的应用程序提供 Material Design 外观以及随后访问 Material 样式小部件和功能的原因。
然后,我们使用 runApp 方法将 MyApp 小部件注册为我们应用程序的主要小部件。
在 MyApp 内部,我们返回 Widget 类型的 build 方法,该方法返回 MaterialApp。 MaterialApp 包含元数据,例如当前 ThemeData、应用程序 title、当前 home 路由等。
注意: 这里我们不必使用 MaterialApp,我们也可以使用 iOS 风格的 CupertinoApp 或带有 WidgetsApp 的自定义样式.
MyHomePage
文件的下一部分定义 MyHomePage。 此类扩展 StatefulWidget:
lib/main.dart
// ...
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
// ...
该文件的最后一部分定义了 _MyHomePageState。 此类扩展了该小部件的 State 和 build 方法。 如果你以前使用过 React,这类似于 JSX 的 render 方法。
在上面的例子中要考虑的更重要的事情之一是我们重写了 createState 方法来提供我们自己的状态管理方式:
lib/main.dart
// ...
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
因此,_counter 状态可以通过 setState() 进行更改。 接下来,我们定义 build 方法,它为我们的应用程序创建一个 Scaffold,其中包含一个 appBar 和一个 body。
在使用 MaterialApp 时,可以将 Scaffold 类视为顶级容器。 这使我们能够轻松添加导航栏、浮动操作按钮、抽屉、避免缺口等等。
每当我们调用 setState() 时,也会调用小部件的 build 方法,从而更新视图并使用新状态重绘。 在我们的示例中,您可以看到我们正在通过 onPressed: _incrementCounter 函数在 FloatingActionButton 中对 setState 进行此调用。
结论
在本文中,您创建了第一个 Flutter 应用程序并探索了生成的代码。
借此机会试验应用程序并更改计数器和文本的值。
继续学习,请查看 我们的 Flutter 主题页面 以获取练习和编程项目。