diff --git a/lib/config/size_config.dart b/lib/config/size_config.dart new file mode 100644 index 00000000..3b443ea7 --- /dev/null +++ b/lib/config/size_config.dart @@ -0,0 +1,47 @@ +import 'package:flutter/cupertino.dart'; + +class SizeConfig { + static double _blockWidth = 0; + static double _blockHeight = 0; + + static double screenWidth; + static double screenHeight; + static double textMultiplier; + static double imageSizeMultiplier; + static double heightMultiplier; + static double widthMultiplier; + + static bool isPortrait = true; + static bool isMobilePortrait = false; + + void init(BoxConstraints constraints, Orientation orientation) { + if (orientation == Orientation.portrait) { + screenHeight = constraints.maxHeight; + screenWidth = constraints.maxWidth; + isPortrait = true; + if (screenWidth < 450) { + isMobilePortrait = true; + } + } else { + screenHeight = constraints.maxWidth; + screenWidth = constraints.maxHeight; + isPortrait = false; + isMobilePortrait = false; + } + + _blockWidth = screenWidth / 100; + _blockHeight = screenHeight / 100; + + textMultiplier = _blockHeight; + imageSizeMultiplier = _blockWidth; + heightMultiplier = _blockHeight; + widthMultiplier = _blockWidth; + + print('textMultiplier $textMultiplier'); + print('imageSizeMultiplier $imageSizeMultiplier'); + print('heightMultiplier$heightMultiplier'); + print('widthMultiplier $widthMultiplier'); + print('isPortrait $isPortrait'); + print('isMobilePortrait $isMobilePortrait'); + } +} diff --git a/lib/interceptor/http_interceptor.dart b/lib/interceptor/http_interceptor.dart index 02e76ea1..997a8c47 100644 --- a/lib/interceptor/http_interceptor.dart +++ b/lib/interceptor/http_interceptor.dart @@ -2,7 +2,7 @@ import 'package:http_interceptor/http_interceptor.dart'; class HttpInterceptor extends InterceptorContract { Future interceptRequest({RequestData data}) async { - print('RequestData ${data.body}'); + // print('RequestData ${data.body}'); try { // data.params['appid'] = OPEN_WEATHER_API_KEY; // data.params['units'] = 'metric'; @@ -17,7 +17,7 @@ class HttpInterceptor extends InterceptorContract { @override Future interceptResponse({ResponseData data}) async { - print('${data.body}'); + // print('ResponseData ${data.body}'); return data; } } \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 119c7816..e752234a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,11 @@ -import 'package:doctor_app_flutter/providers/auth_provider.dart'; -import 'package:doctor_app_flutter/providers/patients_provider.dart'; -import 'package:doctor_app_flutter/providers/projects_provider.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; + +import './config/size_config.dart'; +import './providers/auth_provider.dart'; +import './providers/patients_provider.dart'; +import './providers/projects_provider.dart'; import './routes.dart'; void main() => runApp(MyApp()); @@ -12,22 +14,29 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { - return MultiProvider( - providers: [ - ChangeNotifierProvider.value(value: PatientsProvider()), - ChangeNotifierProvider.value(value: AuthProvider()), - ChangeNotifierProvider.value(value: ProjectsProvider()), - ], - child: MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - primaryColor: Hexcolor('#B8382C'), - buttonColor: Hexcolor('#B8382C'), - fontFamily: 'WorkSans'), - initialRoute: INIT_ROUTE, - routes: routes, - ), + return LayoutBuilder( + builder: (context, constraints) { + return OrientationBuilder(builder: (context, orientation) { + SizeConfig().init(constraints, orientation); + return MultiProvider( + providers: [ + ChangeNotifierProvider.value(value: PatientsProvider()), + ChangeNotifierProvider.value(value: AuthProvider()), + ChangeNotifierProvider.value(value: ProjectsProvider()), + ], + child: MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + primaryColor: Hexcolor('#B8382C'), + buttonColor: Hexcolor('#B8382C'), + fontFamily: 'WorkSans'), + initialRoute: INIT_ROUTE, + routes: routes, + ), + ); + }); + }, ); } } diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 47b449f8..704d8be4 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -1,5 +1,5 @@ -import 'package:doctor_app_flutter/lookups/home_items_lookup.dart'; -import 'package:doctor_app_flutter/routes.dart'; +import '../lookups/home_items_lookup.dart'; +import '../routes.dart'; import '../widgets/home/home_item.dart'; import '../widgets/shared/app.drawer.dart'; diff --git a/lib/widgets/auth/login_form.dart b/lib/widgets/auth/login_form.dart index 54e48068..da7c1d2c 100644 --- a/lib/widgets/auth/login_form.dart +++ b/lib/widgets/auth/login_form.dart @@ -1,5 +1,3 @@ -import '../../providers/projects_provider.dart'; -import '../../util/dr_app_toast_msg.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; @@ -7,13 +5,16 @@ import 'package:hexcolor/hexcolor.dart'; import 'package:imei_plugin/imei_plugin.dart'; import 'package:provider/provider.dart'; +import '../../config/size_config.dart'; import '../../models/user_model.dart'; import '../../providers/auth_provider.dart'; +import '../../providers/projects_provider.dart'; import '../../routes.dart'; import '../../util/dr_app_shared_pref.dart'; +import '../../util/dr_app_toast_msg.dart'; DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); -DrAppToastMsg toastMsg = DrAppToastMsg(); +DrAppToastMsg toastMsg = DrAppToastMsg(); class LoginForm extends StatefulWidget with DrAppToastMsg { LoginForm({ @@ -71,9 +72,8 @@ class _LoginFormState extends State { decoration: InputDecoration( prefixIcon: Image.asset('assets/images/user_id_icon.png'), hintText: 'Enter ID', - hintStyle: TextStyle( - fontSize: - isSmallScreen ? 14 : constraints.maxWidth * 0.024), + hintStyle: + TextStyle(fontSize: 2 * SizeConfig.textMultiplier), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(20)), borderSide: BorderSide(color: Hexcolor('#CCCCCC')), @@ -104,10 +104,8 @@ class _LoginFormState extends State { prefixIcon: Image.asset('assets/images/password_icon.png'), hintText: 'Enter Password', - hintStyle: TextStyle( - fontSize: isSmallScreen - ? 14 - : constraints.maxWidth * 0.024), + hintStyle: + TextStyle(fontSize: 2 * SizeConfig.textMultiplier), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(20)), borderSide: BorderSide(color: Hexcolor('#CCCCCC')), @@ -140,10 +138,8 @@ class _LoginFormState extends State { prefixIcon: Image.asset('assets/images/hospital_icon.png'), // hintText: 'Enter Password', - hintStyle: TextStyle( - fontSize: isSmallScreen - ? 14 - : constraints.maxWidth * 0.024), + hintStyle: + TextStyle(fontSize: 2 * SizeConfig.textMultiplier), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(20)), borderSide: BorderSide(color: Hexcolor('#CCCCCC')), @@ -189,9 +185,7 @@ class _LoginFormState extends State { onChanged: (bool newValue) {}), Text("Remember me", style: TextStyle( - fontSize: isSmallScreen - ? 18 - : constraints.maxWidth * 0.018)), + fontSize: 2 * SizeConfig.textMultiplier)), ], ), ), @@ -208,16 +202,14 @@ class _LoginFormState extends State { BorderSide(width: 0.5, color: Hexcolor('#CCCCCC'))), child: Container( padding: const EdgeInsets.all(10.0), - height: 50, + height: 5*SizeConfig.heightMultiplier, width: constraints.maxWidth * 0.30, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text('LOGIN', style: TextStyle( - fontSize: isSmallScreen - ? 15 - : constraints.maxWidth * 0.020)), + fontSize: SizeConfig.isMobilePortrait?2*SizeConfig.textMultiplier: 2.3*SizeConfig.textMultiplier)), Image.asset('assets/images/login_btn_arrow_icon.png') ], ), @@ -310,7 +302,7 @@ class _LoginFormState extends State { } Future setSharedPref(key, value) async { - sharedPref.setString(key, value).then(( success) { + sharedPref.setString(key, value).then((success) { print("sharedPref.setString" + success.toString()); }); } diff --git a/pubspec.lock b/pubspec.lock index d1775f85..90ac402c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -70,7 +70,7 @@ packages: name: build_daemon url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.4" build_modules: dependency: transitive description: @@ -98,7 +98,7 @@ packages: name: build_runner_core url: "https://pub.dartlang.org" source: hosted - version: "4.5.2" + version: "4.5.3" build_web_compilers: dependency: "direct dev" description: @@ -281,7 +281,7 @@ packages: name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "3.1.3" + version: "3.1.4" i18n: dependency: "direct main" description: @@ -386,7 +386,7 @@ packages: name: package_config url: "https://pub.dartlang.org" source: hosted - version: "1.9.1" + version: "1.9.3" package_resolver: dependency: transitive description: @@ -449,7 +449,7 @@ packages: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "1.4.3" + version: "1.4.4" pubspec_parse: dependency: transitive description: