last_fm
一个简单的应用程序,演示了Flutter可测试、可维护和可扩展的架构。flutter_bloc、hive和
REST API是此项目中使用的部分技术栈。
截图?
![]() |
![]() |
|---|---|
![]() |
![]() |
入门
要使应用程序正常工作,您需要通过在此处 申请 来提供您自己的 last.fm API 密钥。
获得API密钥后,您可以使用以下命令运行或构建该应用程序
# Run
$ flutter run --dart-define=API_KEY=PUT_YOUR_API_KEY_HERE
# Build
$ flutter build --dart-define=API_KEY=PUT_YOUR_API_KEY_HERE
运行测试
要运行所有单元和 widget 测试,请使用以下命令
$ flutter test --coverage --test-randomize-ordering-seed random
要从覆盖率报告中删除生成的文件,请使用以下命令
# 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'
要查看生成的覆盖率报告,您可以使用 lcov。
# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/
# Open Coverage Report
$ open coverage/index.html
处理翻译
此项目依赖于 flutter_localizations 并遵循
Flutter官方国际化指南。
添加字符串
- 要添加新的本地化字符串,请打开位于
lib/config/l10n/arb/app_en.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);
}
添加支持的区域设置
更新位于 ios/Runner/Info.plist 的 Info.plist 中的 CFBundleLocalizations 数组,以包含新的区域设置。
...
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>am</string>
</array>
...
添加翻译
- 对于每个受支持的语言区域设置,请在
lib/config/l10n/arb中添加一个新的ARB文件。
├── l10n
│ ├── arb
│ │ ├── app_en.arb
│ │ └── app_am.arb
- 将翻译后的字符串添加到每个
.arb文件中
app_en.arb
{
"@@locale": "en",
"appName": "LastFM",
"@appName": {
"description": "The application name"
},
}
app_am.arb
{
"@@locale": "am",
"appName": "የመጨረሻ ኤፍ ኤም",
"@appName": {
"description": "የመተግበሪያ ስም"
},
}



