本頭條核心宗旨
歡迎來到「技術剛剛好」作者,「技術剛剛好」是個人維護,每天至少更新一篇Flutter技術文章,實時爲大家播報Flutter最新消息。如果你剛好也在關注Flutter這門技術,那就跟我一起學習進步吧,你的贊,收藏,轉發是對我個人最大的支持,維護不易,歡迎關注。
技術剛剛好經曆
近幾年,移動端跨平台開發技術層出不窮,從Facebook家的ReactNative,到阿裏家WEEX,前端技術在移動端跨平台開發中大展身手,技術剛剛好作爲一名Android開發,經曆了從Reactjs到Vuejs的不斷學習。而在2018年,我們的主角變成了Flutter,這是Goolge開源的一個移動端跨平台解決方案,可以快速開發精美的移動App。希望跟大家一起學習,一起進步!
本文核心要點
有狀態窗口小部件定義爲在其生命周期內更改其狀態的任何窗口小部件
StatefulWidget:
有狀態窗口小部件是一個窗口小部件,它通過構建一個更具體地描述用戶界面的其他窗口小部件來描述用戶界面的一部分 . 構建過程以遞歸方式繼續,直到用戶界面的描述完全具體(例如,完全由RenderObjectWidgets組成,其描述具體的RenderObjects) .
當您描述的用戶界面的一部分可以動態改變時,有狀態小部件很有用,例如,由于具有內部時鍾驅動狀態,或取決于某些系統狀態 . 對于僅依賴于對象本身中的配置信息以及窗口小部件膨脹的BuildContext的組合,請考慮使用StatelessWidget .
StatefulWidget實例本身是不可變的,並將其可變狀態存儲在由createState方法創建的單獨State對象中,或者存儲在該State所訂閱的對象中,例如Stream或ChangeNotifier對象,其引用存儲在StatefulWidget的最終字段中本身 .
main.dart文件
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: MyButton(),
));
}
class MyButton extends StatefulWidget {
@override
MyButtonState createState() {
return MyButtonState();
}
}
class MyButtonState extends State<MyButton> {
int counter = 0;
List<String> strings = ['Flutter', 'is', 'cool', "and","awesome!"];
String displayedString = "Hello World!";
void onPressOfButton() {
setState(() {
displayedString = strings[counter];
counter = counter < 4 ? counter + 1 : 0;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Stateful Widget"),
backgroundColor: Colors.green,
),
body: Container(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(displayedString, style: TextStyle(fontSize: 40.0)),
Padding(padding: EdgeInsets.all(10.0)),
RaisedButton(
child: Text(
"Press me",
style: TextStyle(color: Colors.white),
),
color: Colors.red,
onPressed: onPressOfButton,
)
],
),
),
),
);
}
}
謝謝觀看技術剛剛好的文章,技術剛剛好是個人維護,每天至少更新一篇Flutter技術文章,實時爲大家播報Flutter最新消息。如果你剛好也在關注Flutter這門技術,那就跟我一起學習進步吧,你的贊,收藏,轉發是對我個人最大的支持,維護不易,歡迎關注。