【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.pswp.cn/web/91487.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91487.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91487.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[AI8051U入門第十三步]W5500實現MQTT通信

前言 學習目標: 1、學習MQTT協議 2、了解MQTT數據幀格式 3、自己編寫MQTT程序 4、調試MQTT程序一、MQTT協議介紹 MQTT(Message Queuing Telemetry Transport) 是一種輕量級的 發布/訂閱(Pub/Sub) 消息傳輸協議,專為 低帶寬、高延遲或不可靠網絡 環境設計,廣泛應用于 物…

四、基于SpringBoot,MVC后端開發筆記

整合第三方技術&#xff1a; 1、整合Junit (1)名稱&#xff1a;SpringBootTest (2)類型&#xff1b;測試類注解 (3)位置&#xff1a;測試類定義上方 (4)作用&#xff1a;設置Junit加載的SpringBoot啟動類 (5)相關屬性&#xff1a;classes&#xff1a;設置SpringBoot啟動類 2、整…

深入講講異步FIFO

一、異步 FIFO 的基本概念1.1 定義與核心作用異步 FIFO&#xff08;Asynchronous FIFO&#xff09;是一種讀寫時鐘完全獨立的先進先出&#xff08;First-In-First-Out&#xff09;數據緩沖器&#xff0c;主要用于跨時鐘域數據傳輸場景。在數字系統中&#xff0c;當兩個模塊工作…

linux81 shell通配符:[list],‘‘ ``““

shell 文件處理工具 grep 別名顯示顏色 grep --colorauto ‘root’ passwd alias grep‘grep --colorauto’ vim /etc/bashrc alias grep‘grep --colorauto’ source /etc/bashrc [rootsamba tmp]# grep --colorauto root 2.txt root:x:0:0:root:/root:/bin/bash operator:x:1…

CMake、CMakeLists.txt 基礎語法

前言 代碼變成可執行文件&#xff0c;叫做編譯&#xff08;compile&#xff09;&#xff1b;先編譯這個&#xff0c;還是先編譯那個&#xff08;即編譯的安排&#xff09;&#xff0c;叫做構建&#xff08;build&#xff09;。CMake是最常用的構建工具&#xff0c;誕生于1977年…

《文明5》錯誤代碼0xc0000142修復方法

只要是錯誤代碼為0xc0000142&#xff1f;不管是哪種錯誤&#xff0c;都是一樣的。 修復方法有很多&#xff0c;我先推薦個人認為比較好用的修復方法 方式一&#xff1a;第三方軟件修復&#xff1a; 地址在這里獲取&#xff1a;修復軟件點這里 添加圖片注釋&#xff0c;不超過 …

【Java面試題】緩存穿透

什么是緩存穿透 緩存穿透是指當秒殺請求在Redis中未命中緩存時&#xff0c;系統會轉而查詢數據庫。若數據庫中也不存在該數據&#xff0c;大量此類請求將直接沖擊數據庫&#xff0c;造成數據庫負載激增。解決方案 緩存空值 當我們查詢數據庫發現數據庫當中也不存在該數據時&…

SpringBoot與Rust實戰指南

基于Spring Boot和Rust的實用 以下是基于Spring Boot和Rust的實用示例,涵蓋常見開發場景,分為Spring Boot(Java)和Rust兩部分: Spring Boot 示例 RESTful API 開發 @RestController @RequestMapping("/api") public class UserController {@GetMapping("…

【世紀龍科技】汽車整車維護仿真教學軟件-智構整車維護實訓

在職業院校汽車專業實訓教學中&#xff0c;"設備損耗大、操作風險高、場景覆蓋有限"三大痛點長期制約著教學質量提升——傳統實訓車間里&#xff0c;學生接觸實車的機會受限于車輛臺套數與維護周期&#xff0c;復雜工位流程難以反復演練&#xff1b;高危操作環節&…

CMake set_source_files_properties使用解析

set_source_files_properties() 是 CMake 中用于精細化控制源文件屬性的多功能命令。除了設置編譯標志外&#xff0c;它還有許多其他重要用途。以下是全面的用法解析&#xff1a;一、核心功能分類 1. 編譯控制 編譯器選項&#xff1a;COMPILE_FLAGS / COMPILE_OPTIONSset_sourc…

雷達微多普勒特征代表運動中“事物”的運動部件。

雷達微多普勒特征代表運動中“事物”的運動部件。 即使一個人在椅子上來回搖晃&#xff0c;肉眼看來這個動作也很簡單。但對雷達來說&#xff0c;這是微動作的豐富混合&#xff1a;移動膝蓋和腿、擺動手臂&#xff0c;甚至是傾斜的椅子。所有這些都會產生獨特但復雜的微多普勒特…

FreeRTOS硬件中斷發生時的現場

在FreeRTOS中&#xff0c;當硬件中斷發生時&#xff0c;當前正在運行的任務會立即被掛起&#xff0c;處理器會跳轉到中斷相關的中斷服務程序中&#xff0c;在中斷服務程序執行期間&#xff0c;遵循以下規則&#xff1a;1、中斷獨占CPU&#xff0c;ISR擁有最高的執行優先級&…

kotlin語法和特性分析

核心設計哲學&#xff1a; 簡潔 (Concise): 減少樣板代碼&#xff08;如 getter/setter、類型推導&#xff09;&#xff0c;讓代碼表達更直接。安全 (Safe): 從語言層面設計來避免常見錯誤&#xff08;尤其是空指針異常&#xff09;。互操作性 (Interoperable): 與 Java 無縫集…

二進制數本身沒有默認的有符號或無符號解釋

文章目錄1. ?**?硬件層面&#xff1a;CPU 不區分有符號/無符號?**?2. ?**?解釋權在程序員手中?**?3. ?**?默認傾向性&#xff08;非絕對規則&#xff09;?**?4. ?**?如何避免混淆&#xff1f;?**?5. ?**?經典示例?**?總結1. **解釋為無符號數&#xff08;U…

(AI) Server (Hardware) Architecture

Overview by Atlas T800 Just found a good product demo. from Huawei for its Atlas T800, here 計算產品3D展示 First turn off all modules and we can delve into how this server is organized. Core This is an AI server with 910B as its main feature, which is …

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 微博評論數據可視化分析-用戶評論詞云圖實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解微博評論數據可視化分析-用戶評論詞云圖實現…

【Linux學習|黑馬筆記|Day1】Linux初識、安裝VMware Workstation、安裝CentOS7、遠程連接、虛擬機快照

Linux DAY1 前言 因為之前MySQL學到安裝Linux版本的MySQL了&#xff0c;需要安裝虛擬機等等&#xff0c;所以我打算先學完Linux的全部課程&#xff0c;期間繼續學MySQL 文章目錄Linux DAY1一.1&#xff09;操作系統概述2&#xff09;Linux初識3&#xff09;虛擬機4.1&#xff…

編程與數學 03-002 計算機網絡 13_無線網絡技術

編程與數學 03-002 計算機網絡 13_無線網絡技術一、無線網絡的基本概念&#xff08;一&#xff09;無線通信的頻段與標準&#xff08;二&#xff09;無線網絡的優勢與挑戰二、無線局域網&#xff08;WLAN&#xff09;&#xff08;一&#xff09;802.11標準系列&#xff08;二&a…

肖特基二極管MBR0540T1G 安森美ON 低電壓 高頻率 集成電路IC 芯片

MBR0540T1G ON Semiconductor&#xff1a;超低VF肖特基二極管&#xff0c;重新定義電源效率&#xff01;&#x1f525; 一、產品簡介 MBR0540T1G 是安森美&#xff08;ON Semiconductor&#xff09;推出的0.5A/40V肖特基勢壘二極管&#xff0c;采用專利溝槽結構&#xff0c;專…

windows內核研究(軟件調試-調試事件采集)

軟件調試調試事件采集前面有說到在調試器和被調試之間會創建一個_DEBUG_OBJECT對象來進行關聯調試事件的種類 被調試進程會把一個個的調試事件寫到_DEBUG_OBJECT中的一個成員鏈表中&#xff0c;調試器就通過它們建立的 _DEBUG_OBJECT調試對象獲取調式事件&#xff0c;但并不是進…