詳解Flutter中StatefulBuilder組件的使用
本文是關(guān)于 Flutter 中的 StatefulBuilder 小部件。我將介紹小部件的基礎(chǔ)知識,然后檢查一個在實(shí)際中使用它的完整示例。、StatefulBuilder 小部件可以在這些區(qū)域的狀態(tài)發(fā)生變化時僅重建某些小區(qū)域而無需付出太多努力。這提高了應(yīng)用程序的性能。
StatefulBuilder({
Key? key,
required StatefulWidgetBuilder builder
r})builder 函數(shù)有兩個參數(shù):context和一個用于在狀態(tài)改變時觸發(fā)重建的函數(shù):
builder: (context, setInnerState) => SomeWidget(/* ...*/)
另一個注意事項(xiàng)是,您應(yīng)該將保持狀態(tài)的變量保留在構(gòu)建器函數(shù)之外。為了更清楚,請參閱下面的完整示例。
例子
預(yù)覽
我們要構(gòu)建的示例應(yīng)用程序是一種計數(shù)器應(yīng)用程序。它包含一個按鈕和一個位于紅色圓圈內(nèi)的文本小部件。每按一次按鈕,文本小部件中的數(shù)字就會增加一個單位。我們將只使用StatefulBuilder小部件來實(shí)現(xiàn)這一點(diǎn)。你不會看到任何StatefulWidget。
以下是它的工作原理:

注意: 如果您使用的是 Safari,此演示視頻可能無法正常播放或根本無法播放。請改用 Chrome、Edge、Firefox 或其他網(wǎng)絡(luò)瀏覽器。
編碼
帶有解釋的完整代碼:
// main.dart
import 'package:flutter/material.dart';
?
void main() {
runApp(const MyApp());
}
?
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
?
@override
Widget build(BuildContext context) {
return MaterialApp(
// Remove the debug banner
debugShowCheckedModeBanner: false,
title: '大前端之旅',
theme: ThemeData(
primarySwatch: Colors.amber,
),
home: const HomePage(),
);
}
}
?
// StatelessWidget is used here
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
?
@override
Widget build(BuildContext context) {
// This is the number shown in the red circle
// It represents state and stays outside the builder function
int count = 0;
return Scaffold(
appBar: AppBar(title: const Text('大前端之旅')),
body: Padding(
padding: const EdgeInsets.all(30),
child: Center(
// Implement StatefulBuilder
child: StatefulBuilder(
builder: (context, setInnerState) => Column(
children: [
Container(
width: 300,
height: 300,
decoration: const BoxDecoration(
color: Colors.red, shape: BoxShape.circle),
child: Center(
// Display the number
child: Text(
count.toString(),
style: const TextStyle(fontSize: 80, color: Colors.white),
),
),
),
const SizedBox(
height: 20,
),
// This button is used to crease the number
ElevatedButton.icon(
onPressed: () {
// Call setInnerState function
setInnerState(() => count++);
},
icon: const Icon(Icons.add),
label: const Text('Increase By One')),
],
),
),
),
),
);
}
}結(jié)論
您已經(jīng)了解了有關(guān) StatefulBuilder 小部件的幾乎所有內(nèi)容。這在 Flutter 中并不是不可替代的東西,但在實(shí)現(xiàn)部分應(yīng)用程序時會給你更多的選擇。
到此這篇關(guān)于詳解Flutter中StatefulBuilder組件的使用的文章就介紹到這了,更多相關(guān)Flutter StatefulBuilder組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
android實(shí)現(xiàn)上下左右滑動界面布局
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)上下左右滑動的界面布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12
基于TabLayout中的Tab間隔設(shè)置方法(實(shí)例講解)
下面小編就為大家分享一篇基于TabLayout中的Tab間隔設(shè)置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
Android ViewPager實(shí)現(xiàn)選項(xiàng)卡切換
這篇文章主要介紹了Android ViewPager實(shí)現(xiàn)選項(xiàng)卡切換,詳細(xì)分析了ViewPager實(shí)現(xiàn)選項(xiàng)卡切換功能,感興趣的小伙伴們可以參考一下2016-02-02
Android使用Kotlin和RxJava 2.×實(shí)現(xiàn)短信驗(yàn)證碼倒計時效果
本篇文章主要介紹了Android使用Kotlin和RxJava 2.×實(shí)現(xiàn)短信驗(yàn)證碼倒計時效果,非常具有實(shí)用價值,需要的朋友可以參考下2017-12-12
Android中findViewById獲取控件返回為空問題怎么解決
這篇文章主要介紹了Android中findViewById獲取控件返回為空問題怎么解決的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06
android編程實(shí)現(xiàn)添加文本內(nèi)容到sqlite表中的方法
這篇文章主要介紹了android編程實(shí)現(xiàn)添加文本內(nèi)容到sqlite表中的方法,結(jié)合實(shí)例較為詳細(xì)的分析了Android針對txt文本文件的讀取及SQL數(shù)據(jù)庫操作的相關(guān)技巧,需要的朋友可以參考下2015-11-11
flutter實(shí)現(xiàn)底部導(dǎo)航欄切換
這篇文章主要為大家詳細(xì)介紹了flutter實(shí)現(xiàn)底部導(dǎo)航欄切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07
Android自定義布局實(shí)現(xiàn)仿qq側(cè)滑部分代碼
這篇文章主要為大家詳細(xì)介紹了自定義布局實(shí)現(xiàn)仿qq側(cè)滑Android部分代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
android 限制某個操作每天只能操作指定的次數(shù)(示例代碼詳解)
這篇文章主要介紹了android 限制某個操作每天只能操作指定的次數(shù),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

