Flutter 学习之路 (one)StatefulWidget和StatelessWidget的理解

*关于我是如何去学习flutter的方法
首先了解最基础的一点知识,比如flutter这些代码所表现的界面,它的顶级组件(Widget)是什么,怎么写。
一:
目前我已经学习的理解:
Flutter 顶级类,可以继承两个类:StatefulWidget和StatelessWidget。
比如:
StatelessWidget:

class xxx extends StatelessWidget
{
    @override //此为重载含义
    Widget Build(BuildContext context)
    {
        return Scaffold(
            body:Container(
                //父组件Scaffold的子组件Container
            )
        );//return后面的函数需要加' ; '
    }
}

StatefulWidget:

class xxx extends StatefulWidget
{
  @override
  _xxx createState() => _xxx();// =>即为{}  此处_xxx为本体
}

class _xxx extends State<xxx>
{
    @override
    Widget Build(BuildContext context)
    {
        return Scaffold(
            body:Container(
                //内容再自行补充
            )
        );
    }
}

二:
StatefulWidget和StatelessWidget的区别:

StatefulWidget为一个动态的组件,我们可以通过它来描绘一个动态的Widget,在这里,我们可以让用户根据自己的需求,通过输入等操作来对Widget进行更改,同时可以通过数据的交互来进行形态变化。
StatelessWidget为一个静态的组件,不需要状态改变,内部没有需要管理的状态,不会改变来做到一些渲染。
三:
StatefulWidget拥有一些特殊的函数,可以达到更改渲染、处理数据等的效果:
(StatefulWidget的启动顺序:构造函数 > initState > didChangeDependencies > Widget build)
1.initState

void initState()
{
    super.initState();//理解为重载函数
    //在这里加入的函数,会在初始化界面的时候调用
    //个人一般会在这里加入网络请求,数据处理、存储、调用,持久化存储等相关函数
}

2.didChangeDependencies

void didChangeDependencies()
{
    super.didChangeDependencies();//重载
    //此函数会在initState函数之后调用,同样可以调用函数
    //
}

3.setState

setState((){
    //在此处添加的函数,会在更新界面的时候调用
    //一般来说setState是在一些可以更新界面的组件中添加,例如:RaisedButton 中的
    onpressed中调用,通过添加点击事件,更改界面
});

4.dispose

dispose()
{
   //在此处添加的函数,在界面销毁时调用   
}

其余的就不多做解释了,直接上表格吧:

名称状态
initState初始化界面
didChangeDependenciesState依赖的对象发生变化调用(initState之后调用)
setState更改或更新界面时调用
didUpdateWidget组件状态改变时调用,可能调用多次
build构建Widget时调用
deactivate移除渲染树时调用(dispose之前调用)
dispose销毁界面时调用
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值