004 flutter基礎 初始文件講解(3)

之前,我們正向的學習了一些flutter的基礎,如MaterialApp,Scaffold之類的東西,那么接下來,我們將正式接觸原代碼:

import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Flutter Demo',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),),home: const MyHomePage(title: 'Flutter Demo Home Page'),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;@overrideState<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {int _counter = 0;void _incrementCounter() {setState(() {_counter++;});}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[const Text('You have pushed the button this many times:'),Text('$_counter',style: Theme.of(context).textTheme.headlineMedium, ),],),),floatingActionButton: FloatingActionButton(onPressed: _incrementCounter, tooltip: 'Increment', child: const Icon(Icons.add), ), );}
}

補充:為什么說在flutter里面,萬物皆為widget?

widget是flutter里面的一個類,由于好多類的創建都是繼承于它,可以說絕大部分都來自于widget,包括但不限于之前看見的,Text,Scaffold,所以就有了這個說法

接下來,我們將逐行講解:

import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}

與之前不同的是,這里我們直接調用了MyApp,這里并非是調用類,雖然說MyApp確實是一個類,但是實際上這里是創建了一個類的實例,MyApp并非是flutter自帶的類,而是后面我們創建的,見下:

class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Flutter Demo',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),),home: const MyHomePage(title: 'Flutter Demo Home Page'),);}
}

這里我們可以看見,MyApp是繼承了StatelessWidget的一個類,如果這個時候你按住ctrl鍵,然后點擊StatelessWidget,你就會發現StatelessWidget就是繼承自Widget類,正好印證了上面的“萬物皆為widget”的說法。

第一步自然是將StatelessWidget的屬性繼承過來,也就是通過super方法,調用父類的構造函數,值得注意的是,由于所有的widget都繼承于widget,而widget有一個key屬性,所以是super.key,key可以幫助程序識別widget的身份

這里的title指的是外面的名稱,不是頁面內,而是指啟動程序后,程序的名稱(當然,要改設置,不然你看見的名稱應該是文件名,或者通過其他代碼來修改,這里就先不說),在theme里面,可以設置主題顏色,通過seedColor,可以根據實際情況生成合適的顏色背景,而不用每個地方都由自己設置

最后,設置主界面,當然,這里可以看見,我們通過MyHomePage創建了一個實例,而之于MyHomePage是什么,請見下方,在此之前,還有一個title,這個title指的是標題處的title,也就是主界面頂部的位置的標題

class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;@overrideState<MyHomePage> createState() => _MyHomePageState();
}

這里我們可以看見,MyHomePage繼承于StatefulWidget(當然,按住ctrl鍵點擊StatefulWidget,你會發現它繼承于Widget),首先我們通過super方法,繼承父類的構造函數,當然,我們這里需要一個標題,因為是MyHomePage嘛,所以這里還要一個“required this.title”,required表示這個是必須的,而this.title則是將傳入的參數值直接賦值給當前類的 title 屬性,當然,這里面還沒有title,所以需要下面的final String title來接收,值得注意的是,這里使用的是final,所以值傳入后將不可修改

最后通過@override進行重寫父類方法

在StatefulWidget中,有個方法叫做createState方法,這里就是重寫這個方法

首先,通過State限定類型,必須是 State<具體Widget類型> 的子類,而最后的_MyHomePageState則是創建并返回狀態的對象實例,要注意的是,這里的_MyHomePageState是私有的,因為前面加了“_”。

那么今天就先到這啦,祝大家天天開心!代碼一遍就通!沒有debug的煩惱!如果有講的不好或者不對的地方,可以指出,博主會修正噠!

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82295.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82295.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82295.shtml

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

相關文章

Linux 系統 Docker Compose 安裝

個人博客地址&#xff1a;Linux 系統 Docker Compose 安裝 | 一張假鈔的真實世界 本文方法是直接下載 GitHub 項目的 release 版本。項目地址&#xff1a;GitHub - docker/compose: Define and run multi-container applications with Docker。 執行以下命令將發布程序加載至…

Tree 樹形組件封裝

整體思路 數據結構設計 使用遞歸的數據結構&#xff08;TreeNode&#xff09;表示樹形數據每個節點包含id、name、可選的children數組和selected狀態 狀態管理 使用useState在組件內部維護樹狀態的副本通過deepCopyTreeData函數進行深拷貝&#xff0c;避免直接修改原始數據 核…

tortoisegit 使用rebase修改歷史提交

在 TortoiseGit 中使用 rebase 修改歷史提交&#xff08;如修改提交信息、合并提交或刪除提交&#xff09;的步驟如下&#xff1a; --- ### **一、修改最近一次提交** 1. **操作**&#xff1a; - 右鍵項目 → **TortoiseGit** → **提交(C)** - 勾選 **"Amend…

中科院報道鐵電液晶:從實驗室突破到多場景應用展望

2020年的時候&#xff0c;相信很多關注科技前沿的朋友都注意到&#xff0c;中國科學院一篇報道聚焦一項有望改寫顯示產業格局的新技術 —— 鐵電液晶&#xff08;FeLC&#xff09;。這項被業內稱為 "下一代顯示核心材料" 的研究&#xff0c;究竟取得了哪些實質性進展…

論文閱讀(六)Open Set Video HOI detection from Action-centric Chain-of-Look Prompting

論文來源&#xff1a;ICCV&#xff08;2023&#xff09; 項目地址&#xff1a;https://github.com/southnx/ACoLP 1.研究背景與問題 開放集場景下的泛化性&#xff1a;傳統 HOI 檢測假設訓練集包含所有測試類別&#xff0c;但現實中存在大量未見過的 HOI 類別&#xff08;如…

74道Node.js高頻題整理(附答案背誦版)

簡述 Node. js 基礎概念 &#xff1f; Node.js是一個基于Chrome V8引擎的JavaScript運行環境。它使得JavaScript可以在服務器端運行&#xff0c;從而進行網絡編程&#xff0c;如構建Web服務器、處理網絡請求等。Node.js采用事件驅動、非阻塞I/O模型&#xff0c;使其輕量且高效…

年齡是多少

有5個人坐在一起&#xff0c;問第五個人多少歲&#xff1f;他說比第四個人大兩歲。問第四個人歲數&#xff0c;他說比第三個人大兩歲。問第三個人&#xff0c;又說比第二個人大兩歲。問第二個人&#xff0c;說比第一個人大兩歲。最后問第一個人&#xff0c;他說是10歲。請問他們…

華為OD機試真題——模擬消息隊列(2025A卷:100分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 A卷 100分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 2025華為OD真題目錄+全流程解析/備考攻略/經驗分享 華為OD機試真題《模擬消息隊列》: 目錄 題…

LangChain-結合GLM+SQL+函數調用實現數據庫查詢(三)

針對 LangChain-結合GLM+SQL+函數調用實現數據庫查詢(二)-CSDN博客 進一步簡化 通過 LangChain 和大語言模型(GLM-4)實現了一個 AI 代理,能夠根據自然語言提問自動生成 SQL 查詢語句,并連接 MySQL 數據庫執行查詢,最終返回結果。 整個流程如下: 用戶提問 → AI 生成 SQ…

ZLG ZCANPro,ECU刷新,bug分享

文章目錄 摘要 ??問題的起因bug分享 ?思考&反思 ??摘要 ?? ZCANPro想必大家都不陌生,買ZLG的CAN卡,必須要用的上位機軟件。在汽車行業中,有ECU軟件升級的需求,通常都通過UDS協議實現程序的更新,滿足UDS升級的上位機要么自己開發,要么用CANoe或者VFlash,最近…

第2期:APM32微控制器鍵盤PCB設計實戰教程

第2期&#xff1a;APM32微控制器鍵盤PCB設計實戰教程 一、APM32小系統介紹 使用apm32鍵盤小系統開源工程操作 APM32是一款與STM32兼容的微控制器&#xff0c;可以直接替代STM32進行使用。本教程基于之前開源的APM32小系統&#xff0c;鏈接將放在錄播評論區中供大家參考。 1…

單元測試-斷言常見注解

目錄 1.斷言 2.常見注解 3.依賴范圍 1.斷言 斷言練習 package com.gdcp;import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test;//測試類 public class UserServiceTest {Testpublic void testGetGender(){UserService userService new UserService…

每日算法-250602

每日算法學習記錄 - 250602 今天學習和復習了兩道利用前綴和與哈希表解決的子數組問題&#xff0c;特此記錄。 560. 和為 K 的子數組 題目 思路 本題的核心思想是利用 前綴和 與 哈希表 來優化查找過程。 解題過程 題目要求統計和為 k 的子數組個數。 我們首先預處理出一…

Arch安裝botw-save-state

devkitPro https://blog.csdn.net/qq_39942341/article/details/148387077?spm1001.2014.3001.5501 cargo https://blog.csdn.net/qq_39942341/article/details/148387783?spm1001.2014.3001.5501 megaton https://blog.csdn.net/qq_39942341/article/details/148388164?spm…

STM32學習筆記---時鐘樹

目錄 一、時鐘樹&#xff1a;M3---STM32F103 1、主要時鐘來源 ?2、時鐘系統線路分析 HSE時鐘 HSI時鐘 LSE時鐘 LSI時鐘 PPLCLK ---鎖相環時鐘 SYSCLK ---系統時鐘 HCLK時鐘 PCLK1時鐘 PCLK2時鐘 3、時鐘樹簡圖 4、構成部分作用分析 二、時鐘樹&#xff1a;M4-…

35.x64匯編寫法(二)

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 上一個內容&#xff1a;34.x64匯編寫法&#xff08;一&#xff09; 上一個內容寫了&#xff0c;匯編調…

鉤子函數的作用(register_hook)

鉤子函數僅在backward()時才會觸發。其中&#xff0c;鉤子函數接受梯度作為輸入&#xff0c;返回操作后的梯度&#xff0c;操作后的梯度必須要輸入的梯度同類型、同形狀&#xff0c;否則報錯。 主要功能包括&#xff1a; 監控當前的梯度&#xff08;不返回值&#xff09;&…

【頭歌實驗】Keras機器翻譯實戰

【頭歌實驗】Keras機器翻譯實戰 第1關&#xff1a;加載原始數據 編程要求 根據提示&#xff0c;在右側編輯器補充代碼&#xff0c;實現load_data函數&#xff0c;該函數需要加載path所代表的文件中的數據&#xff0c;并將文件中所有的內容按\n分割&#xff0c;轉換成一個列表…

python中使用高并發分布式隊列庫celery的那些坑

python中使用高并發分布式隊列庫celery的那些坑 &#x1f31f; 簡單理解&#x1f6e0;? 核心功能&#x1f680; 工作機制&#x1f4e6; 示例代碼&#xff08;使用 Redis 作為 broker&#xff09;&#x1f517; 常見搭配&#x1f4e6; 我的環境&#x1f4e6;第一個問題&#x1…

截圖工具 Snipaste V2.10.7(2025.06.2更新)

—————【下 載 地 址】——————— 【?本章下載一】&#xff1a;https://pan.xunlei.com/s/VORklK9hcuoI6n_qgx25jSq2A1?pwde7bi# 【?本章下載二】&#xff1a;https://pan.quark.cn/s/7c62f8f86735 【百款黑科技】&#xff1a;https://ucnygalh6wle.feishu.cn/wiki/…