当前位置: 首页 > news >正文

【Flutter3.8x】flutter从入门到实战基础教程(四):自定义实现一个自增的StatefulWidget组件

fluttet中实现一个自定义的StatefulWidget组件,可以在数据变化后,把最新的页面效果展示给客户

实现效果

请添加图片描述

实现代码

pages文件夹下新加一个counter_page.dart文件

class CounterPage extends StatefulWidget {const CounterPage({super.key});State<CounterPage> createState() => _CounterPageState();
}

_CounterPageState类的实现

class _CounterPageState extends State<CounterPage> {int _counter = 0;void _addCount() {setState(() {_counter++;});}void _decCount() {setState(() {_counter--;});}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('计数器'),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [Text('You have pushed the button this many times:'),Row(mainAxisAlignment: MainAxisAlignment.center,children: [ElevatedButton(onPressed: _decCount,// 减号图标Iconsstyle: const ButtonStyle(backgroundColor: WidgetStatePropertyAll<Color>(Colors.red),),child: Text('-',style: TextStyle(color: Colors.white),),),Text('$_counter'),ElevatedButton(onPressed: _addCount,child: Icon(Icons.add),)],)],),));}
}

_counter 是内部的状态变量,_decCount_addCount是对应按钮的点击事件

使用setState来实现数据的变化,这里有点类似于react的class组件的实现

在main.dart中使用这个组件

import 'package:flutter/material.dart';
import 'package:flutter_app_01/pages/counter_page.dart';
// import 'package:flutter_app_01/pages/msg_page.dart';void main() =>  runApp(const MyWidget());
class MyWidget extends StatelessWidget {const MyWidget({super.key});Widget build(BuildContext context) {return MaterialApp(// debugShowCheckedModeBanner:false,title:"个人中心",// home: MyHomePage(),// home:MessagePage()home: CounterPage());}
}

这样我们就实现了一个自定义组件

http://www.dtcms.com/a/309810.html

相关文章:

  • 磁力搜索+磁力下载!无需解释!直接上车!
  • 工作好用小工具积累
  • EGE 流量开关 LG 518 GSP P11237
  • 异步函数被调用多次,多次处理同一个文件导致占用,如何让异步函数按顺序执行?
  • 书生浦语第五期L0G2
  • 【音视频】WebRTC 中的RTP、RTCP、SDP、Candidate
  • Ubuntu-Server-24.04-LTS版本操作系统如何关闭自动更新,并移除不必要的内核
  • C++在类的构造函数中调用另一个构造函数
  • STM32CubeIDE新建项目过程记录备忘(四)EXTI外部中断
  • 网络编程-加密算法
  • Spring Boot 异步执行方式全解析:@Async、CompletableFuture 与 TaskExecutor 对比
  • 面试题:怎么理解 OSI 参考模型(开放式系统互联参考模型) 和 TCP/IP 模型(传输控制协议 / 网际协议模型 )
  • Node.js中Buffer的用法
  • Linux中Docker Swarm介绍和使用
  • 数据结构学习基础和从包装类缓存到泛型擦除的避坑指南
  • QT初入门-界面设置
  • Metamorph、LlamaFusion、MetaQuery论文解读
  • Linux的对称多处理(SMP)机制
  • embodied复现所需docker环境配置粗略流程
  • CentOS7下同步时间的几种方式(NTP 、Chrony和systemd-timesyncd)
  • 2025年08月01日Github流行趋势
  • 注解退散!纯XML打造MyBatis持久层的终极形态
  • OCR、文档解析工具合集
  • C++ 前缀和、双指针
  • [位运算]2411. 按位或最大的最小子数组长度
  • 下载一个JeecgBoot-master项目 导入idea需要什么操作启动项目
  • 26数据结构-顺序表
  • SpringMVC RESTful 核心要点
  • Excel数据转化为Xmind思维导图全流程(含Word转化格式),实用
  • hadoop.yarn 带时间的LRU 延迟删除