Flutter質(zhì)感設(shè)計之表單輸入
FormField控件是單一表單字段,這個控件維護(hù)表單字段的當(dāng)前狀態(tài),以便更新和驗證錯誤能在UI中可見。TextField控件就是在FormField中包裝了一個Input控件(后面的文章講解),F(xiàn)ormField維護(hù)輸入的當(dāng)前值,使您不需要自己管理它,更容易一次保存,重置或驗證多個字段。
import 'package:flutter/material.dart';
class MyApp extends StatefulWidget {
@override
_MyApp createState() => new _MyApp();
}
class _MyApp extends State<MyApp> {
String _lastName;
String _firstName;
GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
void _showMessage(String name) {
showDialog<Null>(
context: context,
child: new AlertDialog(
content: new Text(name),
actions: <Widget>[
new FlatButton(
onPressed: () {
Navigator.pop(context);
},
child: new Text('確定')
)
]
)
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('表單輸入')
),
// Form:用于將多個表單控件組合在一起的容器
body: new Form(
key: _formKey,
child: new Column(
children: <Widget> [
// TextFieldd:包含輸入的表單控件,每個表單字段都應(yīng)該在FormField控件中
new TextField(
labelText: '姓氏',
// onSaved:當(dāng)通過Form.save()保存表單時調(diào)用的方法
onSaved: (InputValue value) {
_lastName = value.text;
}
),
new TextField(
labelText: '名字',
onSaved: (InputValue value) {
_firstName = value.text;
}
),
new Row(
children: <Widget> [
new RaisedButton(
child: new Text('重置'),
onPressed: () {
// reset():將此Form下的每個TextField重置為初始狀態(tài)
_formKey.currentState.reset();
_showMessage('姓名信息已經(jīng)重置');
}
),
new RaisedButton(
child: new Text('提交'),
onPressed: () {
// save():保存Form下的每個TextField
_formKey.currentState.save();
_showMessage('你的姓名是'+_lastName+_firstName);
}
)
]
)
]
)
)
);
}
}
void main() {
runApp(new MaterialApp(
title: 'Flutter Demo',
home: new MyApp()
));
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android常用的AlertDialog對話框及自定義對話框
本文主要介紹了android常用的AlertDialog對話框及自定義對話框的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04
詳解Android開發(fā)中Activity的四種launchMode
這篇文章主要介紹了Android開發(fā)中Activity的四種launchMode,launchMode主要用于控制多個Activity間的跳轉(zhuǎn),需要的朋友可以參考下2016-03-03
Android 組合控件實現(xiàn)布局的復(fù)用的方法
本篇文章主要介紹了Android 組合控件實現(xiàn)布局的復(fù)用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
Android視圖控件架構(gòu)分析之View、ViewGroup
這篇文章主要為大家詳細(xì)介紹了Android視圖控件架構(gòu)分析之View、ViewGroup,感興趣的朋友可以參考一下2016-05-05
關(guān)于Android中ListView嵌套GridView的問題
在Android開發(fā)的過程中可能需要用到listview嵌套gridview的場景,但是在嵌套過程中也許會遇到問題,我們下面一起來看看是什么問題以及如何解決。2016-08-08
Android Jetpack組件庫LiveData源碼深入探究
LiveData是Jetpack組件的一部分,更多的時候是搭配ViewModel來使用,相對于Observable,LiveData的最大優(yōu)勢是其具有生命感知的,換句話說,LiveData可以保證只有在組件( Activity、Fragment、Service)處于活動生命周期狀態(tài)的時候才會更新數(shù)據(jù)2022-09-09
Android Studio 3.5版本JNI生成SO文件詳解
這篇文章主要介紹了Android Studio 3.5版本JNI生成SO文件詳解,想了解JNI的同學(xué),可以參考下2021-04-04
android全局監(jiān)控click事件的四種方式(小結(jié))
本篇文章主要介紹了android全局監(jiān)控click事件的四種方式(小結(jié)),詳細(xì)介紹如何在全局上去監(jiān)聽 click 點(diǎn)擊事件,并做些通用處理或是攔截,有興趣的可以了解一下2017-08-08

