参考サイトでいう、_updateName
と_updateAge
のようにフィールド毎で別々に入力値を処理するのではなく、submitが押された瞬間にname
とage
の両方の値を取得して処理できるような関数を作りたいのですが、可能でしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ここ参考になりそうです。
投稿2020/12/18 01:10
退会済みユーザー
総合スコア0
0
こういうことでしょうか?
Dart
1import 'package:flutter/material.dart'; 2 3void main() => runApp(MyApp()); 4 5class MyApp extends StatelessWidget { 6 @override 7 Widget build(BuildContext context) { 8 return MaterialApp( 9 title: 'Sample', 10 debugShowCheckedModeBanner: false, 11 theme: ThemeData( 12 primarySwatch: Colors.blue, 13 ), 14 home: Scaffold( 15 appBar: AppBar( 16 title: Text('Sample'), 17 ), 18 body: MyCustomForm(), 19 ), 20 ); 21 } 22} 23 24class MyCustomForm extends StatefulWidget { 25 @override 26 MyCustomFormState createState() => MyCustomFormState(); 27} 28 29class MyCustomFormState extends State<MyCustomForm> { 30 final _formKey = GlobalKey<FormState>(); 31 32 TextEditingController _nameController; 33 TextEditingController _ageController; 34 35 @override 36 void initState() { 37 super.initState(); 38 _nameController = TextEditingController(); 39 _ageController = TextEditingController(); 40 } 41 42 @override 43 Widget build(BuildContext context) { 44 // Build a Form widget using the _formKey we created above 45 return Form( 46 key: _formKey, 47 child: Column( 48 crossAxisAlignment: CrossAxisAlignment.start, 49 children: <Widget>[ 50 TextFormField( 51 decoration: InputDecoration( 52 labelText: "お名前を入力してください。", 53 ), 54 controller: _nameController, 55 ), 56 TextFormField( 57 decoration: InputDecoration( 58 labelText: "ご年齢を入力してください。", 59 hintText: 'ご年齢(10歳以上)', 60 icon: Icon(Icons.person_outline), 61 fillColor: Colors.white, 62 ), 63 controller: _ageController, 64 ), 65 Padding( 66 padding: const EdgeInsets.symmetric(vertical: 16.0), 67 child: RaisedButton( 68 onPressed: onPressed, 69 child: Text('送信する'), 70 ), 71 ), 72 ], 73 ), 74 ); 75 } 76 77 // [送信する]ボタンを押したときの処理 78 void onPressed() { 79 showDialog<void>( 80 context: context, 81 useRootNavigator: false, 82 builder: (context) { 83 return AlertDialog( 84 title: const Text('送信'), 85 content: Text( 86 'お名前 = ${_nameController.text} \n' 87 'ご年齢 = ${_ageController.text}', 88 ), 89 ); 90 }, 91 ); 92 } 93}
投稿2020/05/11 01:48
総合スコア1217
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。