bloc_test
Bloc をテストしやすくするためのテストライブラリ。Bloc の状態管理パッケージと連携して使用することを目的としています。
Flutter向けのテスト可能で保守性が高く、スケーラブルなアーキテクチャを示す簡単なアプリです。このプロジェクトでは、flutter_bloc、get_it、hive、REST APIなどの技術スタックを使用しています。
Bloc をテストしやすくするためのテストライブラリ。Bloc の状態管理パッケージと連携して使用することを目的としています。
Dartにおける関数型プログラミング。効率的な不変データ構造、モナド、レンズ、その他のFPツールを使用してDartコードを純粋化します。
Injectable は get_it 用の便利なコードジェネレーターです。Angular DI、Guice DI、inject.dart からインスパイアされています。
Injectable は get_it 用の便利なコードジェネレーターです。Angular DI、Guice DI、inject.dart からインスパイアされています。
Pretty Dio Logger は、ネットワーク呼び出しを美しく、読みやすい形式でログに記録するための Dio インターセプターです。
ストリームを変換および操作するためのユーティリティのコレクション。
^8.1.0^3.2.3^1.0.5^0.10.1^4.0.6^2.0.5{"sdk":"flutter"}^8.1.1{"sdk":"flutter"}^1.1.6^1.2.3^7.2.0^6.0.0^2.2.3^1.1.0^2.1.0^0.17.0^4.7.0^0.1.0^1.1.1^2.1.0^6.1.7^9.1.0^2.3.3^0.11.0{"sdk":"flutter"}^1.1.6^2.0.0^2.1.3^6.5.4^0.3.0以下は英語原文のスナップショットです。最新版は GitHub をご覧ください。
example workflow codecov Flutter version License: MIT
A simple app to demonstrate a testable, maintainable, and scalable architecture for flutter. flutter_bloc, hive, and REST API are some of the tech stacks used in this project.
| albums | artist |
|---|---|
| top_albums | album_detail |
For the app to work, you need to provide your own last.fm API key by issuing here.
Once you get your API key, you can run or build the app by using the following command:
# Run
$ flutter run --dart-define=API_KEY=PUT_YOUR_API_KEY_HERE
# Build
$ flutter build --dart-define=API_KEY=PUT_YOUR_API_KEY_HERE
To run all unit and widget tests use the following command:
$ flutter test --coverage --test-randomize-ordering-seed random
To remove generated files from the coverage report, use the following command:
# install remove_from_coverage package
$ pub global activate remove_from_coverage
# remove `.g.dart` and `.config.dart` files from the coverage report
$ pub global run remove_from_coverage:remove_from_coverage -f coverage/lcov.info -r '.g.dart', '.config.dart'
To view the generated coverage report you can use lcov.
# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/
# Open Coverage Report
$ open coverage/index.html
This project relies on flutter_localizations and follows the official internationalization guide for Flutter.
app_en.arb file at lib/config/l10n/arb/app_en.arb.{
"@@locale": "en",
"appName": "LastFM",
"@appName": {
"description": "The application name"
}
}
{
"@@locale": "en",
"appName": "LastFM",
"@appName": {
"description": "The application name"
},
"albums": "Albums",
"@albums": {
"description": "Text shown in the AppBar of AlbumsScreen"
},
}
import 'package:some_app/l10n/l10n.dart';
@override
Widget build(BuildContext context) {
final l10n = context.l10n;
return Text(l10n.albums);
}
Update the CFBundleLocalizations array in the Info.plist at ios/Runner/Info.plist to include the new locale.
...
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>am</string>
</array>
...
lib/config/l10n/arb.├── l10n
│ ├── arb
│ │ ├── app_en.arb
│ │ └── app_am.arb
.arb file:app_en.arb
{
"@@locale": "en",
"appName": "LastFM",
"@appName": {
"description": "The application name"
},
}
app_am.arb
{
"@@locale": "am",
"appName": "የመጨረሻ ኤፍ ኤም",
"@appName": {
"description": "የመተግበሪያ ስም"
},
}
Thanks to all the people who created and are maintaining these awesome packages used in this project.
| Maintainers | Packages |
|---|---|
| Felix Angelov | bloc & flutter_bloc, equatable, mocktail |
| Thomas Burkhart | get_it |
| Milad akarie | injectable |
| Chris Sells | go_router |
| Very Good Ventures | For their awesome README template |
| And everyone else | dio, hive, and many more... |
You can file features requests (not intending to add new features, but I will try to add based on requests), bugs or any questions at the issue tracker.
And don't forget to give a star if you find this repo helpful, or you have learned something from it!