/very_good_flutter

This is an implementation of the very_code Flutter framework.

Primary LanguageC++MIT LicenseMIT

Tradepoint

coverage style: very good analysis License: MIT

Generated by the Very Good CLI πŸ€–


Getting Started πŸš€

This project contains 3 flavors:

  • development
  • staging
  • production

To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:

# Development
$ flutter run --flavor development --target lib/main_development.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor production --target lib/main_production.dart

*Tradepoint works on iOS, Android, and Web.


Running Tests πŸ§ͺ

To run all unit and widget tests use the following command:

$ flutter test --coverage --test-randomize-ordering-seed random

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

Working with Translations 🌐

This project relies on flutter_localizations and follows the official internationalization guide for Flutter.

Adding Strings

  1. To add a new localizable string, open the app_en.arb file at lib/l10n/arb/app_en.arb.
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}
  1. 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"
    }
}
  1. Use the new string
import 'package:tradepoint/l10n/l10n.dart';

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

Adding Supported Locales

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>es</string>
	</array>

    ...

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.
β”œβ”€β”€ l10n
β”‚   β”œβ”€β”€ arb
β”‚   β”‚   β”œβ”€β”€ app_en.arb
β”‚   β”‚   └── app_es.arb
  1. 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_es.arb

{
    "@@locale": "es",
    "counterAppBarTitle": "Contador",
    "@counterAppBarTitle": {
        "description": "Texto mostrado en la AppBar de la pΓ‘gina del contador"
    }
}

CI/CD pipeline creation for ios

Please follow these steps:

Install the Apple certificate and provisioning profile.

Generate a Base64 encoded .p12 certificate string in your local machine. If using linux/Mac, you can use the base64 cli command or certutil command if using Windows. Store the generated Base64 .p12 certificate as a secrect on Github -> Settings -> Secrets -> New repository secret using the secret name P12_BASE64 or any other suitable name tag. Next step is to install your Apple Certificate, to do so we will use an action from the community called apple-actions/import-codesign-certs@v1. Final step is to install the provisioning profile.

Specify the correct version of Flutter.

To be able to use Flutter in our workflow we need to install it. In order to achieve this we will use the subosito/flutter-action@v1.4.0 action from the community. In this step, we will specify the specific Flutter version we would like to use.

Update the Flutter pub packages and build the application using flutter for release.

Update the Flutter package and build the application in release mode.

Generate an .ipa for release

Generate an xarchive then export it as an ipa.

Share on Testflight.

Using the apple-actions/upload-testflight-build@v1 action from the community, release the exported ipa to Testflight.