Skip to content

masal9pse/flutter_search_repository_app

Repository files navigation

※ readmeおよびコードも整備中です

バージョン情報

$ fvm --version

$ fvm flutter doctor

動作

  • 何かしらのキーワードを入力できる
  • 入力したキーワードで GitHub のリポジトリを検索できる
  • 検索結果は一覧で概要(リポジトリ名)を表示する
  • 検索結果のアイテムをタップしたら、該当リポジトリの詳細(リポジトリ名、オーナーアイコン、プロジェクト言語、Star 数、Watcher 数、Fork 数、Issue 数)を表示する

アプリの起動方法

$ fvm install

$ fvm flutter pub get

launch.jsonの環境に応じてアプリを起動できます。

コマンド

$ fvm flutter test --coverage
$ brew install lcov
$ genhtml coverage/lcov.info -o coverage/html
  • ビルドランナーコマンド_Freezedやriverpod_generatorの更新をする際に使用
$ fvm flutter pub run build_runner build

アーキテクチャー

  • オニオンアーキテクチャーを使用 基本的にはこちらの記事を参考にして実装

フォルダ構成


├── lib
│   ├── main.dart             # アプリのエントリーポイント
│   ├── application_services  # アプリケーション固有のロジックを持つ
│       ├── config            # アプリの設定ファイル、環境変数の設定など
│       ├── const             # アプリで使用する共通の文言等
│       ├── di                # riverpodのproviderを用いて、依存性注入を行う
│       ├── state             # riverpodの状態管理(notifierとprovider)を担当
│       ├── use_case          # ユーザーからみたシステムの振る舞いを定義
│   ├── domain                # ビジネスロジックの実装とドメインモデルの管理
│       ├── model             # ドメインモデルと共通で使用するモデル(Result、AppError型)の管理
│       ├── repository        # 外部サービスの抽象クラス
│   ├── presentation          # 見た目
│       ├── components        # コンポーネント、riverpodには依存しないようにする
│           ├── atoms         # UIの最小単位
│           ├── molecules     # Atomsをいくつか組み合わせたもの
│           ├── organisms     # moleculesをいくつか組み合わせたもの
│       └── pages             # ページ
│   ├── infrastructure        # 外部サービスのやり取り、ドメインサービス層で用意したrepositoryの実態

riverpodのproviderやwidgetの関係性グラフ

flowchart TB
  subgraph Arrows
    direction LR
    start1[ ] -..->|read| stop1[ ]
    style start1 height:0px;
    style stop1 height:0px;
    start2[ ] --->|listen| stop2[ ]
    style start2 height:0px;
    style stop2 height:0px;
    start3[ ] ===>|watch| stop3[ ]
    style start3 height:0px;
    style stop3 height:0px;
  end
  subgraph Type
    direction TB
    ConsumerWidget((widget));
    Provider[[provider]];
  end

  searchGitHubDataUseCaseProvider[["searchGitHubDataUseCaseProvider"]];
  searchApiNotifierProvider[["searchApiNotifierProvider"]];
  searchApiRepositoryProvider[["searchApiRepositoryProvider"]];
  textEditingControllerProvider[["textEditingControllerProvider"]];
  formKeyProvider[["formKeyProvider"]];
  SearchApiListPage((SearchApiListPage));
  ApiShowPage((ApiShowPage));

  searchApiNotifierProvider ==> SearchApiListPage;
  textEditingControllerProvider ==> SearchApiListPage;
  formKeyProvider ==> SearchApiListPage;
  searchGitHubDataUseCaseProvider -.-> SearchApiListPage;
  searchApiNotifierProvider ==> ApiShowPage;
  searchApiNotifierProvider ==> searchGitHubDataUseCaseProvider;
  searchApiRepositoryProvider ==> searchGitHubDataUseCaseProvider;
Loading

About

FlutterでAPIの検索結果を一覧表示するサンプルアプリです。

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •