首页 > 其他分享 >19、Flutter StatelessWidget 、 StatefulWidget

19、Flutter StatelessWidget 、 StatefulWidget

时间:2023-11-29 15:58:51浏览次数:31  
标签:StatefulWidget const 19 Text State StatelessWidget extends override

在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget  /  StatefulWidget。 StatelessWidget是无状态组件,状态不可变的widget StatefulWidget是有状态组件,持有的状态可能在widget生命周期改变。 通俗的讲:如果我们想改变页面中的数据的话这个时候就需要用到StatefulWidget

StatefulWidget实现一个计数器的功能

//StatefulWidget有状态的组件
class HomePage1 extends StatefulWidget {
  HomePage1({super.key});

  @override
  State<HomePage1> createState() => _nameState();
}

class _nameState extends State<HomePage1> {
  int _countNum = 0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("这是导航栏")),
      body: Center(
          child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text(
            "${_countNum}",
            style: Theme.of(context).textTheme.headline1,
          ),
          ElevatedButton(
            onPressed: () {
              setState(() {
                //改变值 并且重新执行
                _countNum++;
              });

              print("打印${_countNum}");
            },
            child: const Text(
              "增加",
              style: TextStyle(fontSize: 10),
            ),
          )
        ],
      )),
    );
  }
}

StatefulWidget实现一个动态列表

//StatefulWidget有状态的组件
class HomePage2 extends StatefulWidget {
  const HomePage2({super.key});

  @override
  State<HomePage2> createState() => _HomePage2State();
}

class _HomePage2State extends State<HomePage2> {
  final List<String> _list = [];
  int _number = 0; //定义数组
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("这是导航栏")),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          //改变数据必须加上
          setState(() {
            _number++;
            this._list.add("我是一个列表$_number");
          });
        },
        child: const Icon(Icons.add),
      ),
      body: ListView(
          children: _list.map((v) {
        return ListTile(
          title: Text(v),
        );
      }).toList()),
    );
  }
}

 

标签:StatefulWidget,const,19,Text,State,StatelessWidget,extends,override
From: https://www.cnblogs.com/xbinbin/p/17865026.html

相关文章

  • 19.删除链表的倒数第N个节点
    leetcode题目链接题目描述给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]提示:链表中结点的数目为sz1<=sz<=300<=Node.val<=10......
  • 软件设计实验19:中介者模式
    实验19:中介者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解中介者模式的动机,掌握该模式的结构;2、能够利用中介者模式解决实际问题。 [实验任务一]:虚拟聊天室在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具......
  • CF1900D - Small GCD 题解
    1900D-SmallGCD给定序列\(A\),定义\(f(a,b,c)\)为\(a,b,c\)中最小的次小的数的\(\gcd\),求:\[\sum_{i=1}^n\sum_{j=i+1}^n\sum_{k=j+1}^nf(a_i,a_j,a_k)\]题解目前来说有两种方法,都十分有启发意义,但是有共同的开头。考虑到\(A\)的顺序实际上没有......
  • P1955 [NOI2015] 程序自动分析
    P1955[NOI2015]程序自动分析基本思路考虑到了不等号的不可传递性,所以决定只开相等的并查集。然后突发奇想,觉得可以在找父亲的过程中判断是不是冲突。然而这样就不能路径压缩,显然超时。并且,根本没看清楚数据范围,实际上这题的数很大,裸开数组会爆炸。这是一开始的代码#inclu......
  • Oracle Database 19c 创建只读用户
    1.登录oracle数据库服务器,以管理员用户登录sqlplus/assysdba切换容器等操作showpdbs; altersessionsetcontainer=ORA19CPDB;showcon_name;2.创建只读用户createusercmsreadonlyidentifiedbycmsreadonlydefaulttablespaceCMSPROD_DATA......
  • SP19543 GSS8 - Can you answer these queries VIII 题解
    更好的阅读体验SP19543GSS8-CanyouanswerthesequeriesVIIIfhq+二项式定理。提供一个不太一样的思路。默认下标从\(1\)开始。首先插入删除,区间查询,想到可以平衡树维护或者离线下来做线段树。本文中是用的是fhq,好写一些。\(k\)非常的小,考虑对于每一个\(k\)的答......
  • AP5192pwm调光温度保护内置mos管恒流芯片
    产品描述AP5192是一款PWM工作模式,高效率、外围简单、内置功率MOS管,适用于4.5-100V输入的高精度降压LED恒流驱动芯片。最大电流1.5A。AP5192可实现线性调光和PWM调光,线性调光脚有效电压范围0.55-2.6V.AP5192工作频率可以通过RT外部电阻编程来设定,同时内置抖频电路,可以降低对......
  • 219. 存在重复元素 II
    你一个整数数组nums和一个整数k,判断数组中是否存在两个不同的索引i和j,满足nums[i]==nums[j]且abs(i-j)<=k。如果存在,返回true;否则,返回false。示例1:输入:nums=[1,2,3,1],k=3输出:true>代码classSolution{public:boolcontainsNearbyD......
  • CF1901F Landscaping
    题意大概就是给你\(n\)个点\((0,a_0),(1,a_1),\cdots,(n-1,a_{n-1})\),用一根直线\(l\)覆盖这些点,要求所有点都在这条直线\(l\)之下,设\(y_0,y_1\)分别为\(l\)与\(x=0,x=n-1\)的交点纵坐标值,求\(\miny_0+y_1\)。显然题目不可能这么弱智,题目还要......
  • CF1901E Compressed Tree(树dp)
    Problem题目地址Solution来自fcy大佬的思路记\(f_u\)表示假定以\(u\)为根的子树,在压缩后,(子树内的某一个点(包括\(u\)))可以向外(除\(u\)为根的子树外所以点的集合)连一条边时的最大\(sum\)。换言之,我们把树拆成以\(u\)为根的子树(记作\(Tree_u\))和非\(Tree_u\)部分。而......