Giter Site home page Giter Site logo

shmzzzz / bucket_list_app Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 1.27 MB

「人生でやりたい100のこと」を登録するアプリ

Kotlin 0.22% Swift 1.14% Objective-C 0.06% Dart 96.06% Ruby 2.53%
firebase-authentication firebase-database flutter flutter-hooks go-router hooks-riverpod material-design mobile-app onion-architecture riverpod

bucket_list_app's Introduction

🔥 About Me

I'm a Flutter and Android App Developer!📱

🌱 My Skills

Programming Languages:

Programming Languages

Frameworks:

Frameworks

IDEs:

IDEs

Version Control:

Version Control

Design Tools:

Design Tools

Documentation:

Documentation

💨 Status

Top Langs GitHub Stats

bucket_list_app's People

Contributors

shmzzzz avatar

Watchers

 avatar

bucket_list_app's Issues

マイページ画面を作成する

概要

  • マイページ画面の簡易版を作成する

目的

  • とりあえずの画面を作成してからロジックを実装するため

タスク

  • マイページ画面のファイルを作成する
  • 簡易的にマイページ画面だと分かるようにする

ログイン画面のリファクタリング

概要

  • componentを切り出す
  • ほかできることがあればタスク追加する

目的

  • クラスの責務を細分化するため

タスク

  • componentを切り出す
  • 定数を切り出す
  • usecaseを切り出す
  • 表記をサインイン/サインアップで統一する

main.dartをpresentation/page配下に移動する

概要

  • main.dartをpresentation/page配下に移動する

目的

  • Onion Architectureに則る

タスク

  • main.dartをpresentation/page配下に移動する
  • main.dartをimportしているクラスがあればパスを変更する

⚠️ビルドできなくなってしまった(エントリーポイントがないとか)のでこの変更はRevertする

Firebase Authenticationの導入

概要

  • ログイン機能を実装する

目的

  • Firebase Authenticationを導入する

タスク

  • Firebase Authenticationを導入する
  • #27
  • 正常にログインできること

認証時のエラーメッセージを日本語で表示できるようにする

概要

  • 認証時のエラーメッセージを日本語で表示できるようにする

目的

  • エラーの種類をユーザーに認識してもらいやすくするため

タスク

  • エラーの種類を確認する
  • エラーを定義する
  • エラーを日本語で表示する
  • 共通化して SignInUseCaseSignUpUseCase を修正する

リスト画面を作成する

概要

  • 簡易的なリスト画面を作成する

目的

  • とりあえずの画面を作成してからロジックを実装するため

タスク

  • リスト画面のファイルを作成する
  • Scaffoldを使用する
  • BottomNavigationBarを作成する
  • リストタブを作成する
  • 詳細タブを作成する
  • 達成済みタブを作成する
  • マイページタブを作成する

アイテムをFirestore Databaseに登録できるようにする

概要

  • アイテムを登録できるようにする

目的

  • アイテムの登録→一覧表示ができるようにするため
  • 一覧表示は #30 で行う
    • スコープが大きくなりすぎるため分割している

タスク

  • Firestore Databaseに登録できるようにする
  • タイトルはTextで登録する
  • やりたい度はitem pickerの形式が良さそう
    • OKボタンみたいなのも必要
  • 期限もitem pickerの形式で日付を選択→登録
    • OKボタンみたいなのも必要
  • カテゴリはmultiple chipが良さそう
    • OKボタンみたいなのも必要

メモ

  • 調べておきたいパッケージ、クラス

詳細画面を削除する

概要

  • 詳細画面を削除する

目的

  • リスト画面から遷移させるように変更するため(階層を1つ下げる)
    • 一覧画面からのみ遷移できるように修正したいため、一旦削除して #34 で追加する

タスク

  • detail_page.dartの削除
  • 詳細画面への遷移導線の削除

達成済みリスト画面を作成する

概要

  • 達成済みリスト画面の簡易版を作成する

目的

  • とりあえずの画面を作成してからロジックを実装するため

タスク

  • 達成済みリスト画面のファイルを作成する
  • 簡易的に達成済みリスト画面だと分かるようにする

Riverpodの導入

概要

  • Riverpodパッケージを導入する

目的

  • 後続でRiverpodを使用するため

タスク

  • Riverpodパッケージを導入する
    • hooks導入予定(の気持ち)なのでflutter_riverpodじゃなくてhooks_riverpodを導入したほうが良いかも
  • 正常にビルドできることを確認する

リストアイテム画面のデザインを修正する

概要

  • カードではなく画面として表示する

目的

  • カード形式する必要性がないため
  • 領域を狭めないため

タスク

  • タイトル
  • カテゴリ
    • 追加時にボトムシート表示
  • やりたい度
  • 期限日
  • メモ欄
  • ボタン
    • 追加
    • キャンセル

プラスボタンを追加してアイテム追加時のカードを表示できるようにする

概要

  • アイテム追加に必要な機能を作成する

目的

  • リストアイテムを追加できるようにするため

タスク

  • 画面右上にプラスボタンを追加する
  • プラスボタンタップでアイテムメニューを追加する
  • アイテム追加時のカードに必要な項目を入力できるようにする
    • カテゴリはドロップダウンにするのかユーザーに入力してもらうのかは考慮が必要

カスタムフォントを導入する

概要

  • アプリ全体のフォントをGoogle Fontsから選んで導入する

目的

  • アプリの統一感とカスタマイズ感を出すため

タスク

  • Google Fontsからフォントを選択する
  • フォントを導入する
  • アプリ全体に反映させる

詳細画面のボタンタップ時の処理を追加する

概要

  • 詳細画面表示時の機能を実装

目的

  • 詳細画面での編集、削除、達成など状態の更新をできるようにするため

タスク

  • 編集ボタンタップ時の処理
    • 各項目を入力できるようにする
    • 達成ボタンをOKボタンにする
  • 削除ボタンタップ時の処理
    • ダイアログを表示できるようにする
      • 削除ボタンタップでアイテムを削除できるようにする
      • キャンセルボタンタップで削除をキャンセルできるようにする
  • キャンセルボタンタップ時の処理
    • 遷移元に戻るようにする
  • 達成ボタンタップ時の処理
    • 状態を更新できるようにする
    • 各画面との達成状況の整合性が取れるようにする

マイページ画面を表示できるようにする

概要

  • マイページ画面の機能を実装

目的

  • マイページ画面でユーザーが設定を変更できるようにするため

タスク

  • ユーザー名を取得して表示できるようにする
  • プロフィール画像を設定できるようにする(余裕があれば)
  • ログアウトできるようにする

ログイン機能の実装

概要

  • ログイン機能を実装する
  • 参考

目的

  • アプリにアカウントでログインできるようにするため

タスク

  • 正常にログインできること
  • ログイン済みの場合はログイン画面を表示させないこと
  • 未ログインの場合はログイン画面を表示すること

ログイン画面を作成する

概要

  • ログイン画面の簡易版を作成する

目的

  • とりあえずの画面を作成してからロジックを実装するため

タスク

  • ログイン画面のファイルを作成する
  • 簡易的にログイン画面だと分かるようにする
  • タップでリスト画面に遷移できるようにボタンを配置する
  • main.dart を修正する
  • アプリ起動時にログイン画面が表示されるようにする

達成済みリスト画面に達成済みアイテムを表示できるようにする

概要

  • 達成済みリスト画面の表示の作成

目的

  • 達成済みリスト画面に達成したアイテムのみを表示できるようにするため

タスク

  • 達成済みアイテムを達成済みリスト画面に表示する
  • チェックを外したアイテムは非表示になるようにする
  • リスト画面一覧タブのアイテムと整合性が取れることを確認する

リストアイテムタップで詳細画面に遷移できるようにする

概要

  • 詳細画面への導線の作成

目的

  • 詳細画面で編集をできるようにするため

タスク

  • アイテムタップ→詳細画面への導線の作成
  • ボトムナビゲーションから詳細画面へ遷移した場合は最新のアイテムを表示する
  • とりあえず表示だけできれば良いのでボタンタップ時の処理はスコープ外

main.dartをリファクタリングする

概要

  • main.dartのリファクタリングを行う

目的

  • main.dartの不要なコードを削除する

タスク

  • 参照されていないMyHomePageを削除する
  • 正常にビルドできることを確認する
    • #16 での修正漏れの対象
      • ビルドできなくなっていたので、pubspec.yamlでエントリーポイントのパスを修正する
      • Revertすることで対応 #23

go_routerを導入、使用できるようにする

概要

  • 画面遷移時にgo_routerを使用して遷移できるようにバッケージを導入する
  • 導入後、既存の画面遷移をgo_routerで書き換える

目的

  • 画面遷移のコードを短縮させるため

タスク

  • go_routerを導入する
  • libフォルダに一旦入れておく
    • アプリ全体に共通するからcommon
  • 画面遷移の実装箇所をgo_routerに書き換える
    • BottomNavigationBar
    • NavigationDrawer
      • context.goにするとスタックしない?

詳細画面を作成する

概要

  • 詳細画面の簡易版を作成する

目的

  • とりあえずの画面を作成してからロジックを実装するため

タスク

  • 詳細画面のファイルを作成する
  • 簡易的に詳細画面だと分かるようにする
  • リスト画面から詳細画面を表示できるようにする

不確定要素

  • リスト画面を StatelessWidget → StatefulWidget にする必要があるかも
      →とりあえず画面を表示させたいのでStatelessWidgetのまま
  • BottomNavigationBarを全画面で表示させた状態を維持したいのでgo_routerを使用したほうが良いかも
      →とりあえず画面を表示させたいのでgo_router検討はロジック追加するときに併せて考慮する

一覧画面やりたい度タブの表示ができるようにする

概要

  • やりたい度タブの作成

目的

  • やりたい度ごとにセクションを作成して表示できるようにするため

タスク

  • やりたい度ごとにセクションで表示できるようにする
  • セクションにアイテムがない場合はセクションごと非表示にする
  • (できれば)並べ替えができるようにする

theme.dartをpresentation配下に移動する

概要

  • theme.dartをlibフォルダからpresentationフォルダ配下へ移動する

目的

  • Onion Architectureで実装するため

タスク

  • theme.dartをpresentationフォルダへ移動する
  • theme.dartを参照しているクラスでエラーが起きないようにする

共通部分をコンポーネント化する

概要

  • コンポーネント化

目的

  • 全画面で表示している項目についてコンポーネントを使用するように修正する

タスク

  • NavigationDrawerの切り出し
    • 画面数が少ないので NavigationDrawer は削除する
  • BottomNavigationDrawerの切り出し
  • ハードコーディングの修正
  • 各クラスでコンポーネントを使用していること
    • list_page.dart
    • achieved_list.dart
    • my_page.dart
  • 正常に動作できること(デグレ確認)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.