Flutter Getx Template
Description:
This is source flutter template use getx for statemanagement ☕
👀 Overview main.dart , After you can customize languages package, themes, pages and routes
import 'package:flutter/material.dart' ;
import 'package:get_boilerplate/src/lang/translation_service.dart' ;
import 'package:get_boilerplate/src/routes/app_pages.dart' ;
import 'package:get_boilerplate/src/shared/logger/logger_utils.dart' ;
import 'package:get_boilerplate/src/theme/theme_service.dart' ;
import 'package:get_boilerplate/src/theme/themes.dart' ;
import 'package:get/get.dart' ;
import 'package:get_storage/get_storage.dart' ;
void main () async {
await GetStorage .init ();
runApp (GetMaterialApp (
debugShowCheckedModeBanner: false ,
enableLog: true ,
logWriterCallback: Logger .write,
initialRoute: AppPages .INITIAL ,
getPages: AppPages .routes,
locale: TranslationService .locale,
fallbackLocale: TranslationService .fallbackLocale,
translations: TranslationService (),
theme: Themes ().lightTheme,
darkTheme: Themes ().darkTheme,
themeMode: ThemeService ().getThemeMode (),
));
}
🏴 Customize languages package
import 'package:flutter/material.dart' ;
import 'package:get/get.dart' ;
import 'en_US.dart' ;
import 'vi_VN.dart' ;
class TranslationService extends Translations {
static final locale = Get .deviceLocale;
static final fallbackLocale = Locale ('en' , 'US' );
@override
Map <String , Map <String , String >> get keys => {
'en_US' : en_US,
'vi_VN' : vi_VN,
};
}
const Map <String , String > en_US = {
'helloWord' : 'Hello World' ,
};
🔥 similar to other language files
🌓 Customize theme package
import 'package:flutter/material.dart' ;
import 'package:get_boilerplate/src/public/styles.dart' ;
class Themes {
final lightTheme = ThemeData .light ().copyWith (
primaryColor: colorPrimary,
appBarTheme: AppBarTheme (
brightness: Brightness .light,
textTheme: TextTheme (
headline2: TextStyle (color: colorTitle),
),
),
);
final darkTheme = ThemeData .dark ().copyWith (
primaryColor: colorPrimary,
appBarTheme: AppBarTheme (
brightness: Brightness .dark,
textTheme: TextTheme (
headline2: TextStyle (color: mC),
),
),
);
}
🌞 save theme mode in device storage
import 'package:flutter/material.dart' ;
import 'package:get_storage/get_storage.dart' ;
import 'package:get/get.dart' ;
class ThemeService {
final _getStorage = GetStorage ();
final storageKey = 'isDarkMode' ;
ThemeMode getThemeMode () {
return isSavedDarkMode () ? ThemeMode .dark : ThemeMode .light;
}
bool isSavedDarkMode () {
return _getStorage.read (storageKey) ?? false ;
}
void saveThemeMode (bool isDarkMode) {
_getStorage.write (storageKey, isDarkMode);
}
void changeThemeMode () {
Get .changeThemeMode (isSavedDarkMode () ? ThemeMode .light : ThemeMode .dark);
saveThemeMode (! isSavedDarkMode ());
}
}
</> Log error for dev
class Logger {
static void write (String text, {bool isError = false }) {
Future .microtask (() => print ('** $text . isError: [$isError ]' ));
}
}
🔗 Management routes
part of 'app_pages.dart' ;
abstract class Routes {
static const ROOT = '/root' ;
static const HOME = '/home' ;
}
📂 Management pages
import 'package:get_boilerplate/src/app.dart' ;
import 'package:get/get.dart' ;
part 'app_routes.dart' ;
// ignore: avoid_classes_with_only_static_members
class AppPages {
static const INITIAL = Routes .ROOT ;
static final routes = [
GetPage (
name: Routes .ROOT ,
page: () => App (),
children: [],
),
];
}
How I can run it?
🚀 flutter version < 2.0 (1.x.x), not support null safety
🚀 clone this repository
🚀 run below code in terminal
flutter pub get
flutter run
Lib use in project:
get_test: ^ 3.13 .3
get_storage: ^ 1.4 .0
Author: