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

17、Flutter StatelessWidget 、 StatefulWidget

时间:2023-11-23 16:35:37浏览次数:32  
标签:StatefulWidget const Text State StatelessWidget extends override Flutter

在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> {
  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,Text,State,StatelessWidget,extends,override,Flutter
From: https://www.cnblogs.com/xbinbin/p/17850064.html

相关文章

  • localsend 基于flutter 开发的airdrop 可选工具
    localsend是基于flutter开发的airdrop可选工具,同时localsend也开发了一些自己的协议说明对于希望基于localsend学习flutter跨平台开发的localsend还是值得参考学习的参考资料https://github.com/localsend/localsendhttps://localsend.org/https://github.com/localsend/pro......
  • 入门 Dart 编程:为 Flutter 开发应用打下基础 审核中
    前言:Dart是一门现代化的、多用途的编程语言,最为广泛应用于移动应用开发中的Flutter框架。本篇博客旨在为初学者提供Dart编程的基础概念,为进一步探索Flutter开发打下坚实基础。DartPad演示......
  • flutter获取网络连接状态
    通过使用插件connectivity可以获取到当前设备是否联网,以及当前的网络类型是WIFI还是移动 然后将最新版本添加到Flutter项目配置文件中 获取网络类型//获取网络类型String_netType;voidisConnectedType()async{//获取网络连接类型varconnectivi......
  • 16、Flutter Wrap组件 实现流布局
    Wrap可以实现流布局,单行的Wrap跟Row表现几乎一致,单列的Wrap则跟Column表现几乎一致。但Row与Column都是单行单列的,Wrap则突破了这个限制,mainAxis上空间不足时,则向crossAxis上去扩展显示。 Wrap组件的使用//自定义按钮组件classMyAppextendsStatelessWidget{String......
  • 15、Flutter 按钮组件
    按钮组件的属性ButtonStylee里面的常用的参数 ElevatedButtonElevatedButton即"凸起"按钮,它默认带有阴影和灰色背景。按下后,阴影会变大classMyAppextendsStatelessWidget{constMyApp({super.key});@overrideWidgetbuild(BuildContextcontext){......
  • 手机直播源码,Flutter 中的弹簧按钮效果
    手机直播源码,Flutter中的弹簧按钮效果import'package:flutter/material.dart'; classScaleAnimationextendsStatefulWidget   {  finalWidgetchild;  finalFunction()?onTap;  ScaleAnimation({requiredthis.child,requiredthis.onTap,Key?key}):supe......
  • 14、Flutter Card组件
    Card是卡片组件块,内容可以由大多数类型的Widget构成,Card具有圆角和阴影,这让它看起来有立体感。Card实现一个通讯录的卡片classMyApp2extendsStatelessWidget{constMyApp2({super.key});@overrideWidgetbuild(BuildContextcontext){returnListView(......
  • Flutter实现文字的跑马灯滚动显示
    如果你想实现自动滚动,显示完毕后等待1秒钟再次开始自动滚动,可以使用Marquee这个库,它专门用于实现文本的滚动效果。首先,你需要在pubspec.yaml文件中添加marquee依赖:dependencies:marquee:^1.0.3然后运行flutterpackagesget命令以安装依赖项。接下来,使用Marquee组......
  • FlutterApp实战·第01天:Flutter安装和配置
    Flutter安装文档:官方文档:https://docs.flutter.dev/get-started/install中文文档:https://flutter.cn/docs/get-started/installDart升级Dart安装参考前面文章(Dart安装和初体验):https://ntopic.cn/p/2023092301后续学习我们采用最新Flutter版本,因此建议升级Dart最新版本(当前......
  • Flutter/Dart第21天:Dart异步编程(Future/Stream)
    Dart官方文档:https://dart.dev/language/async重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。Future处理我们有2种方式编写Future异步代码:使用async和wait关键字使用FutureAPI(ht......