TEXTBOOK SECTION / AI LEARNING

データを追加する画面を作ろう

Flutterアプリケーション開発概論の「Flutterアプリとデータベース連携入門|アプリのデータを残す仕組み」より、データを追加する画面を作ろうを解説。生成AI、AI活用、DX、業務改善を実践しながら学べるオンライン教材です。

8Flutterアプリとデータベース連携入門|アプリのデータを残す仕組みFlutter / iOS / Android / MacOS / Windows / 基礎から学ぶ / 開発 / アプリ開発

OVERVIEW

この節で学べること

概要を表示する
項目内容
教材名Flutterアプリケーション開発概論
Flutterアプリとデータベース連携入門|アプリのデータを残す仕組み
データを追加する画面を作ろう
カテゴリFlutter / iOS / Android / MacOS / Windows / 基礎から学ぶ / 開発 / アプリ開発
学習内容生成AI、AI活用、DX、業務改善を実践しながら理解するための教材です。

TABLE OF CONTENTS

目次

CONTENT

ここから

この章で学ぶこと

この章では、ユーザーが入力したデータを、アプリに追加する画面の考え方を学びます。

最初に覚えることは、これだけです。

入力する
↓
ボタンを押す
↓
データを保存する
↓
画面に表示する

Todoアプリで考えると、ユーザーが「レポートを書く」と入力し、保存ボタンを押すと、Todo一覧に追加されます。


8-1. 入力フォームとは何か

入力フォームとは、ユーザーが文字や数字を入力する場所です。

例えば、次のようなものです。

名前を入力する
メールアドレスを入力する
Todoの内容を入力する
メモを書く
金額を入力する

Todoアプリなら、入力フォームには「やること」を入力します。

レポートを書く
買い物に行く
英単語を覚える

入力フォームの役割

入力フォームの役割は、ユーザーからデータを受け取ることです。

ユーザーが入力
↓
Flutterが受け取る
↓
保存処理に渡す

つまり、入力フォームは「ユーザーとアプリの入口」です。


8-2. TextFieldで文字を入力する

Flutterで文字を入力する場所を作るときは、TextField を使います。

TextField(
  decoration: InputDecoration(
    labelText: 'Todoを入力',
  ),
)

これは、文字を入力できるフォームです。

画面には、このような入力欄が表示されます。

Todoを入力
[                  ]

入力した文字を受け取る

入力した文字を使うには、TextEditingController を使います。

final TextEditingController _titleController = TextEditingController();

そして、TextField に設定します。

TextField(
  controller: _titleController,
  decoration: const InputDecoration(
    labelText: 'Todoを入力',
  ),
)

これで、入力された文字をあとから取り出せます。


入力内容を取り出す

入力された文字は、このように取り出します。

final String title = _titleController.text;

例えば、ユーザーが「レポートを書く」と入力していた場合、

title = レポートを書く

になります。


8-3. ボタンを押してデータを保存する

入力欄だけでは、まだ保存されません。

保存するには、ボタンを用意します。

ElevatedButton(
  onPressed: () {
    final String title = _titleController.text;
  },
  child: const Text('保存'),
)

onPressed は、ボタンが押されたときに動く処理です。

保存ボタンを押す
↓
onPressedが動く
↓
入力内容を取り出す
↓
保存する

保存処理の流れ

Todoを保存する流れは、こうです。

1. TextFieldにTodoを入力する
2. 保存ボタンを押す
3. 入力された文字を取り出す
4. データベースへ保存する
5. 入力欄を空にする
6. Todo一覧を更新する

最初は、全部を完璧に覚えなくて大丈夫です。

まずは、

入力欄 + 保存ボタン

の組み合わせを理解しましょう。


データベースに保存するイメージ

Supabaseなどのデータベースに保存する場合、考え方はこうです。

title: レポートを書く
is_done: false
created_at: 今の日時

Todoを追加するときは、最初は未完了なので、is_donefalse にします。

false = 未完了
true = 完了

8-4. 入力ミスを防ぐ考え方

入力フォームでは、入力ミスを防ぐことが大事です。

例えば、空のまま保存できてしまうと、何も書かれていないTodoが追加されます。

これでは分かりにくいです。


空文字を防ぐ

入力欄が空の場合は、保存しないようにします。

final String title = _titleController.text.trim();

if (title.isEmpty) {
  return;
}

意味はこうです。

入力文字を取り出す
↓
前後の空白を消す
↓
空なら保存しない

trim() は、前後の余計な空白を消すために使います。


エラーメッセージを出す

空のまま保存しようとしたときは、メッセージを出すと親切です。

Todoを入力してください

ユーザーは、何が足りないのか分かります。


入力ミスを防ぐために考えること

入力フォームでは、次のことを考えます。

空のまま保存できないようにする
長すぎる文字を防ぐ
必要な項目が入力されているか確認する
保存後に入力欄を空にする
保存できたか分かるようにする

最初は、空文字チェックだけで十分です。


実装イメージ

Todoを追加する画面のシンプルなイメージです。

final TextEditingController _titleController = TextEditingController();

Column(
  children: [
    TextField(
      controller: _titleController,
      decoration: const InputDecoration(
        labelText: 'Todoを入力',
      ),
    ),
    ElevatedButton(
      onPressed: () {
        final String title = _titleController.text.trim();

        if (title.isEmpty) {
          return;
        }

        // ここでデータベースに保存する

        _titleController.clear();
      },
      child: const Text('保存'),
    ),
  ],
)

このコードで大事なのは、次の3つです。

TextFieldで入力する
ボタンで保存処理を動かす
空なら保存しない

よくある勘違い

TextFieldに入力しただけで保存される?

保存されません。

TextField は、文字を入力する場所です。

保存するには、ボタンを押したときの処理が必要です。

TextField = 入力する場所
Button = 保存するきっかけ

入力された文字は勝手に使える?

勝手には使えません。

入力された文字を取り出すには、TextEditingController を使います。

_titleController.text

これで、入力された文字を取得できます。


空のTodoを保存してもよい?

基本的には、保存しない方がよいです。

空のデータが増えると、アプリが使いにくくなります。

空なら保存しない

このチェックは、初心者のうちから入れておくと良いです。


インストールや準備について

この章では、まだ新しいインストール作業はしません。

ただし、実装に進む場合は、以下を使います。

Flutter SDK
Visual Studio Code
Supabase
supabase_flutter

参考URLです。

Flutter公式インストール
https://docs.flutter.dev/install

Flutter × VS Code
https://docs.flutter.dev/tools/vs-code

Supabase Flutter Quickstart
https://supabase.com/docs/guides/getting-started/quickstarts/flutter

supabase_flutter
https://pub.dev/packages/supabase_flutter

この章では、まず「入力して保存する流れ」を理解できればOKです。


8-5. この章のまとめ

この章では、データを追加する画面の考え方を学びました。

入力フォームは、ユーザーからデータを受け取る場所です。

Flutterでは、文字入力に TextField を使います。

入力された文字を取り出すには、TextEditingController を使います。

保存ボタンを押したときに、入力内容を取り出してデータベースへ保存します。

TextFieldで入力
↓
ボタンを押す
↓
入力内容を取り出す
↓
保存する
↓
一覧に表示する

また、空のまま保存しないように、入力ミスを防ぐチェックも大切です。

次の章では、保存したデータを更新・削除する考え方を学びます。

FAQ

よくある質問

データを追加する画面を作ろうは医療関係者向けだけの内容ですか。
医療分野の例が含まれる場合もありますが、医療関係者だけに限定した内容ではありません。生成AI、AI活用、DX、業務改善、プロトタイプ開発など、一般的なAI学習の事例として読める内容です。
AI初心者でも読めますか。
はい。AIをこれから学ぶ方、数学が苦手な方、仕事でAIを使いたい方にも読み進めやすいように、教材の章と節の流れに沿って整理しています。
サムネイル画像は必ず表示されますか。
はい。教材にcoverUrlが設定されている場合はその画像を表示し、未設定の場合は代替サムネイル画像を表示します。
Flutterアプリケーション開発概論のほかの章も読めますか。
はい。教材トップから章立てを確認でき、前後の節へもページ下部のナビゲーションから移動できます。