remedi_base module
It has below features.
1. provides base http api service & dio wrapper.
2. Application configs.
3. provides Application ID
4. AppContainer.
Getting Started
#1. How to use?
A. AppConfig.
-
AppConfig provides application info such as version, build number, build flavor and etc.
-
run AppConfig.init() before runApp();
-
run setFlavorConfig on each entrypoint file(main-dev.dart or main-prod.dart) for product flavor(dev, prod).
-
pass AppContainer() to runApp().
void main() async { WidgetsFlutterBinding.ensureInitialized();
AppConfig.setFlavorConfig( baseUrl: "https://google.com", baseWebUrl: "https://naver.com", isRelease: kReleaseMode, endpoint: "dev", enablePrintLog: kReleaseMode, ); // First time, do init() await AppConfig.init(); // optional. AppConfig.log(); runApp(AppContainer( app: MaterialApp( home: MyApp(), ), ));
}
B. http Api & others.
B-1. Http request
- There are 4 Base Dio wrapper classes for post, get, patch, delete request.
B-2. Application unique ID
-
can get application unique id by "AppRepository.appId"
class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); }
class _MyAppState extends State
@override void initState() { super.initState(); initPlatformState(); } Future<void> initPlatformState() async { String platformVersion; platformVersion = await AppRepository.instance.appId; if (!mounted) return; setState(() { _platformVersion = platformVersion; }); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Plugin example app'), ), body: FutureBuilder( future: GoogleApiService().request(), builder: (context, snapshot) { String htmlString = 'about:blank'; if (snapshot.hasData) { htmlString = snapshot.data; } return ListView( children: [Text(htmlString)], ); }), ), ); }
}
class GoogleApiService extends DioGetApiService
@override String get path => ""; @override String jsonTo(dynamic json) { return json; }
}
class GoogleApiDto extends IDto { final String html;
GoogleApiDto({this.html}); @override Map<String, dynamic> toJson() { return {"data": html}; }
}
Libraries
- app/app_config
- AppConfig is in charge of managing product flavor, device info and os info.
- app/app_repository
- app/app_wrapper
- App Container
- errors/app_error
- remedi_base