如需转载,请注明出处:Flutter学习笔记(14)--StatefulWidget简单使用

今天上班没那么忙,突然想起来我好像没StatefulWidget(有状态组件)的demo,闲来无事,写一个简单的学习学习,前面我们有说过,Flutter不同于Android。Flutter是只绘制一帧,这一帧会绘制整个widget树,也就是说一次绘制整个界面,那么想一下,如果想要页面内容发生变化,是不是要重新绘制界面呢?如果需要重新绘制的,又怎么样来触发重新绘制的机制呢?先看下demo的代码吧,很简单的!

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget{
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new MyAppState();
} } class MyAppState extends State<MyApp> {
var _textContent = 'welcome to flutter word';
void _changeTextContent(){
setState(() {
_textContent = 'what is up man???';
});
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return new MaterialApp(
theme: new ThemeData(
primaryColor: Colors.white,
),
debugShowCheckedModeBanner: false,
title: 'demo',
home: new Scaffold(
appBar: new AppBar(
title: new Text('Demo'),
leading: Icon(Icons.menu,size: ,),
actions: <Widget>[
Icon(Icons.search,size: ,)
],
),
body: new Center(
child: new Text(_textContent),
),
floatingActionButton: new FloatingActionButton(onPressed: _changeTextContent,child: new Icon(Icons.adjust),),
),
);
}
}

StatefulWidget是有状态的组件,意思不是说StatefulWidget类本身是可变的,实际上StatefulWidget类本身也是不变的,而StatefulWidget持有的state状态是在widget整个生命周期内一直存在的,也是因为有了这个state状态,我们就可以通知Flutter框架某一个状态发生了变化,Flutter会重新运行build方法来重新绘制界面。

上面的demo就是一个text和一个button,点击按钮,调用_changeTextContent这个私有的方法,在_changeTextContent这个方法里面我们将文本的内容进行了更改,这个操作是放在了setState方法内的,setState这个方法的作用就是通知Flutter框架,有组件的状态发生变化了,你需要重新执行build绘制界面了,这样我们重新赋值的文本内容就会展示到前台了。

下一章节:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

最新文章

  1. IIS------无法打开登录所请求的数据库 &quot;company&quot;。登录失败。 用户 &#39;IIS APPPOOL\AppPool 4.0&#39; 登录失败。
  2. javascript,jQuery,trim()
  3. 更改RAC日志组
  4. 微信开发之Ngrok环境准备(一)
  5. Unix/Linux环境C编程入门教程(42) 终端控制篇
  6. linux常用操作命令
  7. DDD理论学习系列(11)-- 工厂
  8. Java hashtable和hastmap的区别
  9. mysql定时器设置开机默认自启动
  10. python之zip打包
  11. winfrom中pictureBox控件的部分使用方法
  12. CSS效果:CSS实用技巧制作三角形以及箭头效果
  13. Oracle11g_OCM 课堂教学目录表
  14. 在Ubuntu 14.04 64bit上安装网易云音乐Linux版本(最新官方版)
  15. iOS开发多线程篇—GCD简介
  16. Linux下七牛云存储qrsync命令行上传同步工具
  17. JavaScript总结(三)
  18. 6.安装pyhook报错is not a supported wheel on this platform
  19. 我所理解的 PHP Trait
  20. GCT系统阶段后三十题的解析(转)

热门文章

  1. BFS(一):广度优先搜索的基本思想
  2. white box白盒测试
  3. kubernetes实战之consul简单测试环境搭建及填坑
  4. 深入理解Java内存模型JMM与volatile关键字
  5. springboot2.x纯注解整合dubbo
  6. 扩展了一些String常用的方法.
  7. 新手上路—Java的&quot;瑞士军刀&quot;
  8. Hash的应用
  9. Java底层技术系列文章-hashcode深入理解
  10. 9.18考试 第三题chess题解