12.Flutter之StatefulWidget开启动态的界面

//主题终于来了,我们当时第一个Flutter项目,点击右下角的加号,
// 然后就可以让屏幕中心的数字累加一下,我前面学习的都是自定义
// 无状态也就是Stateless,下面开始真正的开发了,实现当时第一个flutter的功能

img

实现这个效果,点一下按钮更新下数字

我们使用AndroidStudio开发,有些快捷创建的方式,大家自己琢磨吧

stful就可以快捷创建这样一个动态的widget

前面都一样,创建,调用类嘛

//有状态组件,stful就可以生成,写的地方和less的差不多

class HomePage extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<HomePage> {
  int cnt = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Chip(
          label: Text("${this.cnt}"),
        ),
        ElevatedButton(
          child: Text("点击按钮"),
          onPressed: () {
            setState(() {
              //只有有状态里面才有改变状态这个方法
              this.cnt++;
            });
          },
        ),
      ],
    );
  }
}


然后结合学过的listView写的自动添加item。
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List list=new List();
  @override
  Widget build(BuildContext context) {
    return ListView(
      children: [
        Column(
          children:this.list.map((value){
            return ListTile(
              title:Text( value),
            );
          }).toList() ,
        ),
        SizedBox(
          height: 20,
        ),
        ElevatedButton(
          onPressed: () {
            print("nihoa ");
            setState(() {
              this.list.add("新增列表1");
            });
          },
          child: Text("点击我"),
        ),
      ],
    );
  }
}

期间遇到这种问题,以前也总是遇到,但是记不得写笔记了,

img

遇到这种情况就重启下吧,重启能更快速的方法是下面这个

img

然后就 一秒重启,如果是上面的重启按钮,估计一分钟,。。。

img

点击两次后

img

然后都是新增列表1,改一下

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List list=new List();
  int cnt=0;
  @override
  Widget build(BuildContext context) {
    return ListView(
      children: [
        Column(
          children:this.list.map((value){
            return ListTile(
              title:Text( value),
            );
          }).toList() ,
        ),
        SizedBox(
          height: 20,
        ),
        ElevatedButton(
          onPressed: () {
            print("nihoa ");
            this.cnt++;
            setState(() {
              this.list.add("新增列表${this.cnt}");
            });
          },
          child: Text("点击我"),
        ),
      ],
    );
  }
}

img

然后发挥大脑想想奇葩的布局吧,比如把以前的ListView动态生成的,在这里把cnt当成下标,让他动态的加载我们写好的数据集。

    ),
  ],
);

}
}


[外链图片转存中...(img-jCT020C3-1617961563308)]

 

 然后发挥大脑想想奇葩的布局吧,比如把以前的ListView动态生成的,在这里把cnt当成下标,让他动态的加载我们写好的数据集。

动态加载的这些widget是无法使用ctrl+s保存直接显示出来的,所以一定要记得那个快速重启的按钮,那个按钮才是更新界面常用的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值