last_fm

example workflow
codecov
Flutter version
License: MIT

一个简单的应用程序,用于演示一个可测试、可维护和可扩展的 Flutter 架构。flutter_bloc、hive 和
REST API 是此项目中使用的部分技术栈。


截图?

albums artist
top_albums album_detail

入门?

要使应用程序正常工作,您需要提供自己的 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 官方国际化指南

添加字符串

  1. 要添加新的本地化字符串,请打开位于 lib/config/l10n/arb/app_en.arbapp_en.arb 文件。

{
  "@@locale": "en",
  "appName": "LastFM",
  "@appName": {
    "description": "The application name"
  }
}
  1. 然后添加新的键/值和描述

{
  "@@locale": "en",
  "appName": "LastFM",
  "@appName": {
    "description": "The application name"
  },
  "albums": "Albums",
  "@albums": {
    "description": "Text shown in the AppBar of AlbumsScreen"
  },
}
  1. 使用新字符串

import 'package:some_app/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.albums);
}

添加支持的区域设置

更新位于 ios/Runner/Info.plistInfo.plist 中的 CFBundleLocalizations 数组,以包含新的区域设置。

    ...

<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>am</string>
</array>

        ...

添加翻译

  1. 对于每个支持的语言区域设置,请在 lib/config/l10n/arb 中添加一个新的 ARB 文件。

├── l10n
│   ├── arb
│   │   ├── app_en.arb
│   │   └── app_am.arb
  1. 将翻译后的字符串添加到每个 .arb 文件中

app_en.arb

{
  "@@locale": "en",
  "appName": "LastFM",
  "@appName": {
    "description": "The application name"
  },
}

app_am.arb

{
  "@@locale": "am",
  "appName": "የመጨረሻ ኤፍ ኤም",
  "@appName": {
    "description": "የመተግበሪያ ስም"
  },
}

鸣谢?

感谢所有为此项目使用的超赞软件包的创建者和维护者。

维护者
Felix Angelov bloc & flutter_bloc, equatable, mocktail
Thomas Burkhart get_it
Milad akarie injectable
Chris Sells go_router
Very Good Ventures 感谢他们超赞的 README 模板
以及其他所有人 dio, hive, 以及更多…

功能和 Bug

您可以在 issue tracker 提交功能请求(不打算添加新功能,但我会尝试根据请求添加)、错误或任何
问题。

如果您发现此存储库有帮助,请不要忘记给它一个星,或者
从中有所学!

维护者

GitHub

查看 Github