Flutter应用程序初探

2019-07-19  本文已影响0人  柳源居士

1. 本文内容来自flutter中文网

  1. 程序创建过程略,详情看flutter中文网教程
  2. 知识点:

使用第三方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的生命周期:

上一篇下一篇

猜你喜欢

热点阅读