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