In this app, it is possible to you find information about the next movie you're going to watch in the company of a nice Chicken Box and of course, having a good time!
This App has some features such as:
Internationalization (i10n) | Dark/Light mode | And more! |
---|---|---|
💡 The Search feature considers both title and description of the movie.
This project has a simple CI pipeline, to analyze the code and run the unit and widget tests.
For more information, check the ci.yaml file, which has the whole process in detail, step by step.
- Clone this repository into your machine:
git clone https://github.com/samuelematias/chicken_box_time.git
- With the repository cloned, open the repository root in your terminal and run the command:
bash ./flutter_packages.sh
With FVM (In project root, and into each package, run this command):
fvm flutter pub get
- Everything working fine, without any errors, run the app with the following command:
flutter run --flavor development -t lib/main_development.dart
With FVM:
fvm flutter run --flavor development -t lib/main_development.dart
- Have fun!
- Android
- iOS
- Linux
- Hover
- macOS - Soon!
Flavor Development | Flavor Staging | Flavor Production |
---|---|---|
flutter run --flavor development -t lib/main_development.dart
flutter run --flavor staging -t lib/main_staging.dart
flutter run --flavor production -t lib/main_production.dart
In VsCode, add this config in your .vscode/launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"name": "development",
"request": "launch",
"type": "dart",
"program": "lib/main_development.dart",
"args": [
"-t",
"lib/main_development.dart",
"--flavor",
"development"
]
},
{
"name": "staging",
"request": "launch",
"type": "dart",
"program": "lib/main_staging.dart",
"args": [
"-t",
"lib/main_staging.dart",
"--flavor",
"staging"
]
},
{
"name": "production",
"request": "launch",
"type": "dart",
"program": "lib/main_production.dart",
"args": [
"-t",
"lib/main_production.dart",
"--flavor",
"production"
]
}
]
}
This project relies on flutter_localizations and follows the official internationalization guide for Flutter.
- To add a new localizable string, open the
app_en.arb
file atlib/l10n/arb/app_en.arb
.
{
"@@locale": "en",
"counterAppBarTitle": "Counter",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
}
}
- Then add a new key/value and description
{
"@@locale": "en",
"counterAppBarTitle": "Counter",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"helloWorld": "Hello World",
"@helloWorld": {
"description": "Hello World Text"
}
}
- Use the new string
import 'package:very_good_example_app/l10n/l10n.dart';
@override
Widget build(BuildContext context) {
final l10n = context.l10n;
return Text(l10n.helloWorld);
}
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>pt</string>
</array>
...
- For each supported locale, add a new ARB file in
lib/l10n/arb
.
├── l10n
│ ├── arb
│ │ ├── app_en.arb
│ │ └── app_pt.arb
- Add the translated strings to each
.arb
file:
app_en.arb
{
"@@locale": "en",
"counterAppBarTitle": "Counter",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
}
}
app_pt.arb
{
"@@locale": "pt",
"counterAppBarTitle": "Contador",
"@counterAppBarTitle": {
"description": "Texto mostrado na AppBar da Counter Page"
}
}
💪 Building with sound null safety 💪
Aren't you in this Flutter/Dart vesion? Consider taking a look at FVM, I believe it can help you at this point 😉.
- bloc
- bloc_test
- build_runner
- cached_network_image
- equatable
- flutter_bloc
- flutter_localizations
- flutter_svg
- go_router
- http
- intl
- json_annotation
- json_serializable
- lottie
- meta
- mocktail
- modal_bottom_sheet
- very_good_analysis
- Design System - Tests
- Movie API - Tests
- Movie Repository - Tests
- Movie Feature - More Tests
- Local Storage - Implementation
- Local Storage - Tests
- Manually change theme/mode (take default by system)
- Manually change language
- Settings page (change theme/language)
- Infinite scroll - movie_list_page
- Accessibility
Samuel Matias 💻 🎨 |