From ad4a2afec1b346d0e8444e4e2758dfd7061b3c1e Mon Sep 17 00:00:00 2001 From: nope0124 Date: Wed, 1 Nov 2023 15:54:35 +0900 Subject: [PATCH] =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E7=94=BB=E9=9D=A2=E3=81=AE?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 80 ++++++++++++++++++++++++++++++++++++++++++++++-- lib/todoAdd.dart | 72 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 lib/todoAdd.dart diff --git a/lib/main.dart b/lib/main.dart index 5ea65d2..348cfc6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'penalty.dart'; +import 'todoAdd.dart'; void main() { @@ -33,8 +34,6 @@ class TodoListPage extends StatefulWidget { } class _TodoListPageState extends State { - - @override Widget build(BuildContext context) { return Scaffold( @@ -64,6 +63,15 @@ class _TodoListPageState extends State { }, child: Text('失敗'), ), + TextButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => TodoAddPage()), + ); + }, + child: Text('追加'), + ), ], ), ); @@ -71,5 +79,73 @@ class _TodoListPageState extends State { } +class TodoAddPage extends StatefulWidget { + @override + _TodoAddPageState createState() => _TodoAddPageState(); +} +class _TodoAddPageState extends State { + // 入力されたテキストをデータとして持つ + String _text = ''; + // データを元に表示するWidget + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('リスト追加'), + ), + body: Container( + // 余白を付ける + padding: EdgeInsets.all(64), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // 入力されたテキストを表示 + Text(_text, style: TextStyle(color: Colors.blue)), + const SizedBox(height: 8), + // テキスト入力 + TextField( + // 入力されたテキストの値を受け取る(valueが入力されたテキスト) + onChanged: (String value) { + // データが変更したことを知らせる(画面を更新する) + setState(() { + // データを変更 + _text = value; + }); + }, + ), + const SizedBox(height: 8), + Container( + // 横幅いっぱいに広げる + width: double.infinity, + // リスト追加ボタン + child: ElevatedButton( + onPressed: () { + // "pop"で前の画面に戻る + // "pop"の引数から前の画面にデータを渡す + Navigator.of(context).pop(_text); + }, + child: Text('リスト追加', style: TextStyle(color: Colors.white)), + ), + ), + const SizedBox(height: 8), + Container( + // 横幅いっぱいに広げる + width: double.infinity, + // キャンセルボタン + child: TextButton( + // ボタンをクリックした時の処理 + onPressed: () { + // "pop"で前の画面に戻る + Navigator.of(context).pop(); + }, + child: Text('キャンセル'), + ), + ), + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/lib/todoAdd.dart b/lib/todoAdd.dart new file mode 100644 index 0000000..8a86789 --- /dev/null +++ b/lib/todoAdd.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +class TodoAddPage extends StatefulWidget { + @override + _TodoAddPageState createState() => _TodoAddPageState(); +} + +class _TodoAddPageState extends State { + // 入力されたテキストをデータとして持つ + String _text = ''; + + // データを元に表示するWidget + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('リスト追加'), + ), + body: Container( + // 余白を付ける + padding: EdgeInsets.all(64), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // 入力されたテキストを表示 + Text(_text, style: TextStyle(color: Colors.blue)), + const SizedBox(height: 8), + // テキスト入力 + TextField( + // 入力されたテキストの値を受け取る(valueが入力されたテキスト) + onChanged: (String value) { + // データが変更したことを知らせる(画面を更新する) + setState(() { + // データを変更 + _text = value; + }); + }, + ), + const SizedBox(height: 8), + Container( + // 横幅いっぱいに広げる + width: double.infinity, + // リスト追加ボタン + child: ElevatedButton( + onPressed: () { + // "pop"で前の画面に戻る + // "pop"の引数から前の画面にデータを渡す + Navigator.of(context).pop(_text); + }, + child: Text('リスト追加', style: TextStyle(color: Colors.white)), + ), + ), + const SizedBox(height: 8), + Container( + // 横幅いっぱいに広げる + width: double.infinity, + // キャンセルボタン + child: TextButton( + // ボタンをクリックした時の処理 + onPressed: () { + // "pop"で前の画面に戻る + Navigator.of(context).pop(); + }, + child: Text('キャンセル'), + ), + ), + ], + ), + ), + ); + } +} \ No newline at end of file