Lento con forza

大学生気分のIT系エンジニアが色々書いてく何か。ブログ名決めました。

ChatGPTでアプリを作る Part2 スプラッシュ画面を作るといいらしい・・・?

ChatGPTでアプリを作ろうとしています、id:kouki_danです。

前回のPart1では、技術選定をChatGPT主導でやっていきました!

kouki.hatenadiary.com

次は、いよいよアプリ作成に入っていきましょう!

まずは、作るべき画面を聞いてみました!

アプリの構造を計画します。どのような画面があると良いですか?  FreezStockアプリの構造を計画する際に、以下の画面を検討してみてください。  スプラッシュ画面: アプリが起動されたときに表示される、短時間のスプラッシュ画面。アプリのロゴやブランド名を表示します。  ログイン/サインアップ画面: ユーザーがアプリを使用する前に、ログインまたはサインアップを行う画面。Firebaseの認証機能を利用して、メールアドレスとパスワード、またはソーシャルログインを実装できます。  冷凍庫一覧画面: 登録された冷凍庫の一覧を表示する画面。ユーザーが複数の冷凍庫を管理できるようにします。また、新しい冷凍庫を追加する機能も提供します。  冷凍庫詳細画面: 選択された冷凍庫の中身を一覧表示する画面。アイテムの名前、入れた日付、消費期限、冷凍焼けリマインダーなどの情報を表示します。また、アイテムの追加や編集、削除ができるようにします。  アイテム追加/編集画面: 冷凍庫に新しいアイテムを追加するための画面。アイテム名、入れた日付、消費期限、冷凍焼けリマインダーなどの情報を入力します。編集画面では、既存のアイテムの情報を変更できます。  リマインダー通知画面: 冷凍焼けリマインダーが設定されたアイテムの通知を表示する画面。通知を受け取ったユーザーが、アイテムを確認しやすいようにします。  設定画面: アプリの設定を変更するための画面。通知の設定やアカウント情報、アプリのテーマカラーなどを変更できるようにします。

正直、スプラッシュや冷凍庫一覧画面は本当に作るの?って感じがするのですが、今の僕はChatGPTの手足なので、受け入れるスタイルでいきます!

一気に作ることはできないので、作る順番を聞いてみました

どの画面から作ると良いですか? 開発を効率的に進めるためには、以下の順番で画面を作成することをおすすめします。  スプラッシュ画面: アプリの起動時に表示されるスプラッシュ画面から始めましょう。これにより、アプリの基本的な構造を作り、開発のモチベーションを維持できます。  ログイン/サインアップ画面: 次に、Firebaseの認証機能を設定し、ログインおよびサインアップ機能を実装します。これにより、ユーザーごとにデータを管理できる基盤ができます。  冷凍庫一覧画面: ログイン後に表示される冷凍庫一覧画面を作成しましょう。ここで、Firebaseからデータを取得し、表示する方法を実装できます。  冷凍庫詳細画面: 冷凍庫一覧画面から選択された冷凍庫の内容を表示する画面を作成します。ここでも、Firebaseからデータを取得し、表示する方法を実装します。  アイテム追加/編集画面: 冷凍庫詳細画面でアイテムの追加や編集ができるように、この画面を作成します。データの追加、更新、削除を行う方法を実装できます。  リマインダー通知画面: 冷凍焼けリマインダーの通知機能を実装し、通知画面を作成します。ここでは、リマインダー通知の設定と受信を行う方法を実装します。  設定画面: 最後に、アプリの設定画面を作成しましょう。この画面では、通知設定やアカウント情報、アプリのテーマカラーなどの変更ができるようにします。  この順番で画面を作成することで、段階的にアプリの機能を実装し、効率的に開発を進めることができます。ただし、これは一例であり、プロジェクトの状況や開発者の好みに応じて、画面作成の順番を変更することができます。重要なのは、計画的に開発を進めることです。

どうやら、最初に教えてくれた画面は、作るべき順番に並べてくれていたみたいですね。早速スプラッシュ画面から作っていきましょう!

スプラッシュ画面の作り方を教えてください  Flutterでスプラッシュ画面を作成する方法はいくつかありますが、ここではシンプルな方法を説明します。main.dartファイルのmain関数でスプラッシュ画面を表示し、一定時間経過後に次の画面(ログイン/サインアップ画面など)に遷移する方法です。  まず、pubspec.yamlファイルに画像を表示するために使用するアセットを追加しましょう。例えば、assets/imagesディレクトリにあるsplash.pngを使用する場合、以下のように追加します。  yaml Copy code flutter:   assets:     - assets/images/splash.png 次に、main.dartファイルでスプラッシュ画面を表示します。以下のようなコードを追加してください。

import 'dart:async';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'FreezStock',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SplashScreen(),
    );
  }
}

class SplashScreen extends StatefulWidget {
  @override
  _SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {
  @override
  void initState() {
    super.initState();
    Timer(Duration(seconds: 3), () {
      Navigator.pushReplacement(
        context,
        MaterialPageRoute(builder: (context) => LoginSignupScreen()),
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Image.asset('assets/images/splash.png'),
      ),
    );
  }
}

class LoginSignupScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('ログイン/サインアップ')),
      body: Center(child: Text('ログイン/サインアップ画面')),
    );
  }
}

上記のコードでは、スプラッシュ画面を表示して3秒後にログイン/サインアップ画面に遷移します。Image.asset(&#x27;assets/images/splash.png&#x27;)を使ってスプラッシュ画面に画像を表示しています。必要に応じて、画像のサイズや表示位置を調整してください。  これで、シンプルなスプラッシュ画面の実装が完了しました。アプリの起動時にスプラッシュ画面が表示され、指定した時間が経過すると次の画面に遷移します。

すごい、それっぽいコードが出てきましたね。2つ目に作るログイン画面まで少しできています。

ただ、splash.pngがないので、画像を作ってくれないかと頼んだのですが、難しいみたいでした。

スプラッシュ画面で表示する画像をもらえませんか?  残念ながら、具体的な画像ファイルを直接提供することはできませんが、以下のオンラインリソースから無料で利用できる画像を見つけることができます。  Unsplash Pexels Pixabay これらのウェブサイトから、スプラッシュ画面に適した画像を見つけてダウンロードできます。ダウンロードした画像は、プロジェクトのアセットディレクトリ(例:assets/images)に配置し、pubspec.yamlに追加してください。その後、先ほど説明したようにImage.assetウィジェットで画像を表示することができます。  また、スプラッシュ画面で表示する画像がブランドロゴなど独自のデザインである場合は、専門のデザイナーやオンラインサービス(例:Fiverrや99designs)を利用して作成することを検討してください。

SVGなら書いてくれるんじゃないかなぁとお願いしてみたのですが、あまりうまくいかず・・・。ただ、SVGファイルをFlutterで表示する方法は教えてくれました。

スプラッシュ画面で表示するブランドロゴをSVG形式で書いてもらえませんか?  私はテキストベースのAIアシスタントであるため、直接SVG形式のロゴを作成することはできません。ただし、以下のような簡単なSVG形式のテキストロゴの例を提供できます。この例を参考に、ロゴをカスタマイズして作成してください。上記のコードは、&quot;FreezStock&quot;というテキストを表示するシンプルなSVGロゴです。必要に応じて、テキストの内容、フォントサイズ、フォントファミリー、色などを変更してカスタマイズできます。  FlutterでSVGファイルを表示するには、flutter_svgパッケージを使用することが推奨されます。以下の手順でflutter_svgパッケージをプロジェクトに追加して、SVGファイルを表示できます。  pubspec.yamlファイルにflutter_svgパッケージを追加します。 yaml Copy code dependencies:   flutter:     sdk: flutter   flutter_svg: ^0.22.0 pubspec.yamlファイルで、SVGアセットを追加します。

その後、いろいろ試行錯誤した結果、凝ったものは作ってくれなさそうだったので諦めました・・・。(誰かChatGPTにロゴを作らせる方法を知ってる人がいたら教えてください)

polygynを使って、よりFreezStockにふさわしいSVGを作ってもらえませんか?  もちろんです。以下に、&lt;polygon&gt;タグを使用してFreezStockにふさわしい氷の結晶のようなシンプルなSVGアイコンを作成した例を示します。 この例では、3つの頂点を持つ簡単な氷の結晶のような三角形を作成しました。points属性には、頂点の座標がスペース区切りで指定されています。必要に応じて、形状や位置を調整してカスタマイズできます。  このSVGコードを使用して、スプラッシュ画面に氷の結晶アイコンとテキストのロゴを表示できます。前述のflutter_svgパッケージを利用してSVGアイコンを表示してください。

最終的に出来上がった画面は、こちらです!

Part2は、この辺りまで。次はログインログアウト編かな?

出来上がったコミットはこちらです!もちろんコミットメッセージも、diffをChatGPTに投げつけて作ったものです!

github.com