Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mono0926/wdb106-flutter

WEB+DB PRESS Vol.106のAndroid・iOSアプリ設計のサンプルをFlutterではどう書くかというサンプル
https://github.com/mono0926/wdb106-flutter

bloc dart design-patterns flutter

Last synced: about 8 hours ago
JSON representation

WEB+DB PRESS Vol.106のAndroid・iOSアプリ設計のサンプルをFlutterではどう書くかというサンプル

Awesome Lists containing this project

README

        

# wdb106_sample

- [WEB+DB PRESS Vol.106](https://www.amazon.co.jp/dp/4774199435?tag=mono0926-22) の特集 1 の「実践 Android/iOS アプリ設計」のサンプルを Flutter ではどう書くのかというサンプル
- 元のサンプルは [サポートページ:WEB+DB PRESS Vol.106](http://gihyo.jp/magazine/wdpress/archive/2018/vol106/support) からダウンロード可能

## 内容概要

- 以下のパッケージを組み合わせたパターン
- [Riverpod](https://riverpod.dev) の [flutter_riverpod](https://pub.dev/packages/flutter_riverpod)
- [state_notifier](https://pub.dev/packages/state_notifier)
- [freezed](https://pub.dev/packages/freezed)
- 自動テストをほぼ網羅
- 自動スモークテスト(Widget テスト)も対応
- JSON API は http://www.mocky.io で用意
- https://github.com/mono0926/wdb106-flutter/blob/main/response.jsonc

| 商品リスト | カート |
| -------------------------------- | ---------------------------- |
| ![商品リスト](screenshots/1.png) | ![カート](screenshots/2.png) |

# Provider graph

Generated by https://github.com/rrousselGit/riverpod/tree/master/packages/riverpod_graph

```mermaid
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
_ItemListView((_ItemListView));
itemStocksProvider ==> _ItemListView;
_CartButton((_CartButton));
cartProvider ==> _CartButton;
cartProvider ==> _CartButton;
ItemTile((ItemTile));
itemStocksProvider ==> ItemTile;
itemQuantityProviders ==> ItemTile;
_AddButton((_AddButton));
itemQuantityProviders ==> _AddButton;
cartProvider -.-> _AddButton;
CartPage((CartPage));
cartProvider --> CartPage;
_CartListView((_CartListView));
cartProvider ==> _CartListView;
CartHeader((CartHeader));
cartPriceProvider ==> CartHeader;
CartTile((CartTile));
itemStocksProvider ==> CartTile;
cartProvider ==> CartTile;
cartProvider -.-> CartTile;
App((App));
routerProvider ==> App;
itemStocksProvider[[itemStocksProvider]];
httpClientProvider ==> itemStocksProvider;
httpClientProvider[[httpClientProvider]];
itemQuantityProviders[[itemQuantityProviders]];
itemStocksProvider ==> itemQuantityProviders;
cartProvider ==> itemQuantityProviders;
cartProvider[[cartProvider]];
cartPriceProvider[[cartPriceProvider]];
cartProvider ==> cartPriceProvider;
itemStocksProvider ==> cartPriceProvider;
routerProvider[[routerProvider]];
```