Flutter: Stateful 掛件 vs Stateless 掛件
Flutter
一切皆掛件。如果你想開發一個應用,首先,你得知道你需要使用哪種掛件。每個掛件都有它的狀態。
狀態是什麼?
狀態就是在構建小掛件時可以同時讀取資訊,並且可能在執行時更改資訊。簡而言之,我們可以說 State
定義了 Widget
的當前屬性。
繼承 Stateful
掛件的類是不可變的,但是 State
是可變的。
不可變的類 意味著一旦物件被建立,我們不可以改變它的內容。可變的類 是指一旦它被建立,我們還是可以更改它內部的狀態。
應用 Stateful 掛件的步驟
- 通過繼承
StatefulWidget
去建立一個類,然後在createState()
方法中返回狀態 - 建立
State
類掛件可能在執行時候更改它的值 - 在
State
類中,應用build()
方法 - 呼叫
setState()
方法。setState()
方法實際上是重繪掛件。
程式碼示例
應用 Stateless 掛件的步驟
- 通過繼承
StatelessWidget
去建立一個類 - 為掛件建立一個
build()
方法,在個關鍵在執行時不更改其內容 build()
方法中返回掛件
程式碼示例
完整的程式碼和輸出
``` import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: Home(), ); } }
class Home extends StatefulWidget { @override _HomeState createState() => _HomeState(); }
class _HomeState extends State
class Greet extends StatelessWidget { @override Widget build(BuildContext context) { return RaisedButton( child: Text("Nice to meet you"), ); } } ```
本文是譯文,採用意譯的方式。原文連結 http://levelup.gitconnected.com/flutter-stateful-widget-vs-stateless-widget-c7baf0a3bbc1
- 前端開發中 5 個很讚的資源
- 懂點心理學 - 馬太效應
- Flutter 構建一個 todo list 應用
- Dart 知識點 - 資料型別
- Dart 知識點 - 混入 Mixin
- Dart 知識點 - 集合 List, Set, Map
- Flutter - 使用 push(), pop() 和路由進行導航
- Dart 知識點 - 面向物件基礎
- Flutter: Stateful 掛件 vs Stateless 掛件
- Flutter 實現登入 UI
- Dart 知識點 - 抽象類和介面
- 自 2020 年以來全球的開源商業化軟體融資情況
- IstioCon 2022 回顧及錄影、PPT 分享
- 網頁實現 1CM 物理長度
- Flutter 開發出現的那些 Bugs 和解決方案「持續更新... 」
- 仿寫新聞客戶端
- Beyond Istio OSS —— Istio 服務網格的現狀及未來
- 在外企的工作生活「年中總結」
- 如何在 Istio 中整合 SPRIRE?
- Javascript尾遞迴程式設計