App Shamo – Shoes Store (Full-Stack Laravel Flutter)

A Example Application Ecommerce – Shoes Store by Doni Mulya Syahputra. Welcome and enjoy my code for your study progress. For boilerplate, i’m using Flutter Starter by Wisnu G. Saputra.

Flutter Starter

Wisnuwiry

Language Flutter Starter Codecov style: very good analysis License: MIT PRs Welcome Stars Stars Stars

A Flutter Starter Project created by the Wisnu G. Saputra.


Preview πŸͺŸ

Android iOS Web
Android iOS Web

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

*Flutter Starter works on iOS, Android, and Web.


Build App πŸ”₯

To build APK desired flavor use the following commands:

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

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

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

And for builds for release, see the documentation according to the Android and iOS platforms.


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:flutter_starter/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"
    }
}

Working with Route Navigation 🧭

More info: https://gorouter.dev/

Working with Atomic Design Component πŸ’‘

More info about Atomic Design: https://atomicdesign.bradfrost.com/

Package Used πŸ“¦

Name Category Info
flutter_bloc State Management
bloc_concurrency State Management
dartz Functional Programming
equatable Equality of Object
get_it Dependency Injection
go_router Routing Navigator v2
hive Local DataBase
intl internationalization and localization
internet_connection_checker Utility
json_annotation Utility
path_provider Utility
stream_transformer Utility

GitHub

View Github