Flutter应用程序初探
2019-07-19 本文已影响0人
柳源居士
1. 本文内容来自flutter中文网
- 程序创建过程略,详情看flutter中文网教程。
- 知识点:
使用第三方package:
在项目下的pubspec.yaml文件里,添加第三方项目的dependencies:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
# 开源软件包 ,其中包含数千个最常用的英文单词以及一些实用功能.
english_words: ^3.1.0
然后在Android Studio的编辑器视图中查看pubspec时,单击右上角的 Packages get,这会将依赖包安装到您的项目。
创建有状态的widget
Stateless widgets 是不可变的, 这意味着它们的属性不能改变 - 所有的值都是最终的.
比如IconButton。
创建的app起始页,其内容只有在app重新加载时,才会重新load。
Stateful widgets 持有的状态可能在widget生命周期中发生变化. 实现一个 stateful widget 至少需要两个类:
一个 StatefulWidget类。
一个 State类。 StatefulWidget类本身是不变的,但是 State类在widget生命周期中始终存在.
理解:有状态的widget一是需要一个StatefulWidget,然后再创建状态。
//创建一个StatefulWidget类,并创建状态
class RandomWords extends StatefulWidget {
@override
createState() => new RandomWordsState();
}
//创建状态类
class RandomWordsState extends State<RandomWords> {
//添加build方法,完成功能
@override
Widget build(BuildContext context) {
final wordPair = new WordPair.random();
return new Text(wordPair.asPascalCase);
}
}
class MyApp extends StatelessWidget {
@override
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 Text(wordPair.asPascalCase),
child: new RandomWords(),
),
),
);
}
}
在Dart语言中使用下划线_前缀标识符,会强制其变成私有的。
内容更改后,页面如何刷新:
提示: 在Flutter的响应式风格的框架中,调用setState() 会为State对象触发build()方法,从而导致对UI的更新
在setState()里,传入另一个匿名函数,来执行动作。意味着参数函数执行完成后,调用setState()。
页面间路由:
在Flutter中,导航器(Navigator)管理应用程序的路由栈。将路由推入(push)到导航器的栈中,将会显示更新为该路由页面。 从导航器的栈中弹出(pop)路由,将显示返回到前一个路由。
新页面的内容在在MaterialPageRoute的builder属性中构建,builder是一个匿名函数。
void _pushSaved() {
Navigator.of(context).push(
new MaterialPageRoute(
builder: (context) {
//do here
return one widget;
},
),
);
}
后记:
widget的生命周期: