创建一个默认的Flutter应用后,将以下代码复制到 lib/main.dart 中:
import 'package:flutter/material.dart';
//运行Flutter应用,创建了一个自己实现的Widget对象
void main() => runApp(new MyApp());
//实现的Widget类
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Welcome to Flutter',
home: new Scaffold(
appBar: new AppBar(
title: new Text('Welcome to Flutter'),//AppBar的title
),
body: new Center(
child: new Text('Hello World'),//屏幕中间的文字
),
),
);
}
}
使用Android Studio的格式化快捷键可以让代码更加整洁。代码被复制进Android Studio之后,会自动添加一些注释,我们可以更清晰地看到其结构。
运行新建的应用后,界面会显示一个简单的"Hello World"文字。
官方给出的代码分析如下:
在这一步中,我们将使用一个名为english_words的开源软件包,其中包含数千个最常用的英文单词以及一些实用功能。
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
Tip: “驼峰命名法”(称为"upper camel case"或"Pascal case"),表示字符串中的每个单词(包括第一个单词)都以大写字母开头。所以,“uppercamelcase"变成"UpperCamelCase”
进行以下更改:
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
final wordPair = new WordPair.random();//获取WordPair对象
return new MaterialApp(
title: 'Welcome to Flutter',
home: new Scaffold(
appBar: new AppBar(
title: new Text('Welcome to Flutter'),
),
body: new Center(
child: new Text(wordPair.asPascalCase),//使用WordPair对象生成文本
),
),
);
}
}
如果应用程序正在运行,请使用热重载按钮(lightning bolt icon)更新正在运行的应用程序。每次单击热重载或保存项目时,都会在正在运行的应用程序中随机选择不同的单词对。这是因为单词对是在build方法内部生成的。每次MaterialApp需要渲染时或者在Flutter Inspector中切换平台时build都会运行。
Stateless widgets是不可变的,这意味着它们的属性不能改变-所有的值都是最终的。
Stateful widgets持有的状态可能在widget生命周期中发生变化。实现一个stateful widget至少需要两个类:
在这一步中,您将添加一个有状态的widget-RandomWords,它创建其State类RandomWordsState。State类将最终为widget维护文本的变化。
封装一个Widget,将文本的获取转移到Widget中进行:
class RandomWordsWidget extends StatefulWidget {
createState() => new RandomWordsStatus();
}
class RandomWordsStatus extends State<RandomWordsWidget> {
Widget build(BuildContext context) {
final wordPair = new WordPair.random();
return new Text(wordPair.asPascalCase);
}
}
使用封装好的Widget替换原来用来显示文字的Text:
import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Welcome to Flutter',
home: new Scaffold(
appBar: new AppBar(
title: new Text('Welcome to Flutter'),
),
body: new Center(
child: new RandomWordsWidget(),
),
),
);
}
}
现在每次热加载可以看到随机生成的文字。
当你的Flutter应用开发完成后,可以使用appuploader工具来简化iOS应用的打包和上传流程。appuploader是一款专业的iOS开发助手,可以帮助开发者快速完成证书管理、描述文件配置和应用上传等工作,特别适合不熟悉Mac环境的开发者使用。
对于Flutter项目,在终端运行flutter build ios
命令生成iOS项目后,可以直接使用appuploader来打包和上传应用。相比传统的Xcode打包方式,appuploader提供了更简洁的操作界面和更快的上传速度,大大提高了开发者的工作效率。