From d70b20f5ffaf00ffb3a7812e4f86651d5433f780 Mon Sep 17 00:00:00 2001 From: sindhu Date: Sat, 15 Feb 2025 12:01:35 +0700 Subject: [PATCH] step 3 : buat screen splash screen --- images/logo.png | Bin 0 -> 10695 bytes images/splash.png | Bin 0 -> 19529 bytes images/splashatas.png | Bin 0 -> 3241 bytes images/splashbawah.png | Bin 0 -> 3276 bytes lib/app/constant.dart | 213 ++++++++++++++++++++++++++++++++++ lib/app/route.dart | 28 +++++ lib/main.dart | 131 ++++----------------- lib/screen/splash_screen.dart | 59 ++++++++++ pubspec.yaml | 8 +- 9 files changed, 327 insertions(+), 112 deletions(-) create mode 100644 images/logo.png create mode 100644 images/splash.png create mode 100644 images/splashatas.png create mode 100644 images/splashbawah.png create mode 100644 lib/app/constant.dart create mode 100644 lib/app/route.dart create mode 100644 lib/screen/splash_screen.dart diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3d175e98af69c372e3a26934429a1ab524f24cd0 GIT binary patch literal 10695 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 literal 0 HcmV?d00001 diff --git a/images/splash.png b/images/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdddbe04ca748731438580b9bdf35fbe6470078 GIT binary patch literal 19529 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 literal 0 HcmV?d00001 diff --git a/images/splashatas.png b/images/splashatas.png new file mode 100644 index 0000000000000000000000000000000000000000..7adff617cc58df4406347aab4ee091cd50984842 GIT binary patch literal 3241 zcmV;a3|8}rP)Qp=Uy%RI0F3MXE{_)&!}2h!h)$l!zegN>xiE6|B6&x(|J; zV$`aB=mSO-LRH$>JXQ+$QdNCHDUM2m0twzWYF=7_NoaiLZf7#HcQ)t4yEnGizPtVY zKk0Jd8wLm8|7Ldg+ZjO{r1;Uulz#H43I12UOMjia77$Z^_~amcR{BbwnE6`g7W&~+ zj|bEwLeS{ZJ^Rj3lXMUpDo;!aC8vq6JT-}wavL>~Ly&pGQL_Z>Alv{Mg>W+ z2;pYH6_}QDgm5#kNzDI?fE|RJfeu&QAz%mLX5jJ7|K)rsj4gzlfoHc}!L*zqgqx3m zfE9$B38~b(1gs$3Ob9_Z?q&wzX2OvQ;bsQmW}@6tM!1E%2CJER;xEXop<)Z~fxQT=dgqsA-5 zG>*|byAW>1qC3TiaO|B?2sd+=4;{hiolzUM%cqj+90_X5I$od4FY@~77{Rg}DTkEf zOi{*^l+QvtOv@n>y3P=4&a(yKhDc%H)qrqvEmII~SakW&YojPj%?^Yc zmcaBpI}mPIqB1=f!vt*);f9BpYv20XB}!A<9KsFDx^(#HNrf$l+FDe^lK1-a4mqbu zsJl|B(V#FH#Qg!?wnw);VcB*i{d&6Xv1(gix1CMtd+>gFicWlYZ;AFkU!u+~71xwL z{f|R``^zTk>LU8y^Y>}nWASZoedN;LuXNB8Psym?ERw<*aFm=9`k#@Y?L^@gLQLtC zDEaEIU(!#@Uidd*t+vfo+wRd%eQ}-F^}A0$^)~328ueRkJ5kebqqbA`?h(E7=gm>? z2YzsWxu$gIwxHkrwu_2$mAW1i^dG-Iw`^PUnrR!kLNurUOkBV1%p8Av6Bqg%8D146 zas+L~F#({ZpUnB{*Op_xUi(A#D6XL%UF-Vo(O-*ugY+!(_r!Kx_qvzRcFAiWT#K)^ zy>r`H47PFWV>h;K{cAG`ZQGp*xO7Ax&Y-s+r#ht#YQ7dEOmodK*y0aaC@~(>j&vW> z%k&%f1}W6_TcCJL`c3*C>igaPbQs(4Nj<%;ow9%Dx%jE}lTXSezwb`yHwy{_N2YNG zz5PTd)Ra{^u{$d;WV%7#~J-NDM=>&z^nb9NweQ-+dj*-f$8__Psqs^Uz(>E z`{(1DM#2918(&1n&y}|E)9md#!o{{Pzf#QPl)PT`?y(_)wt*W*7_hl<#Mb^logdV1 znzPg%aN`JoEi-}(DRB(m1`uvoF|)X$blhGn^3d84ZdjGdS#+ll0dHLhH>_GE;P-n` zs@j?mZdenu$f7A#)yLtu7rezRl%Ja7l7%(KE;cGD)lY-^F{9fhZYWpN?`*Z-*_8TS zN!y;^yeS9we!oP|K37g^8da&icV!bj_Lywg)>NsPq8OXD9O&b4-cJDvfKXdu*fw<1=`YqV@yM6z`o?DmS9*$|7Tk<{h4GhjqO(gdF z=_hXPtqU&QzJ0$z`ROCkv+>V=l)YjOS!sN!stNw#S1N5A^~;?p zdNG&Ga7KOOq5PDAG|NxdLZ5KUyJ6_-lQA2$K?KTA0XBk}s$V+%+MqceHzPTw>+1_= zf?&f{&#Ip^kLX4erH<**+#^U8Ms8>-b4;#B^S;VxP8iKogpnIsLhWeoO`Px17b5pj zs4t0PL|-+88(L0f<(KFZ=NWI}Y|af`kH|dK9wn#;>$%xMxS^$)+I9UjS$#yz$lg(w zIo09pq0lVmsrE!K2$3h0zAj=B?vZP6kmK?#H2L7}cKzSoloi#HJ^E!*J3Z>>sfmhC zd9;&goSKBib#5BF>5))uuXB?MyXpAufPfX8EeFUbCgCmz1i%bNZh(y95pEoB0z;fe z?tlOo;S+8}SZ5npVKj29_X&UzOv?c>ic$Hg2nbeXZpP13newhawAsAVpQd%DX8c^K zMEOuquCs%tMYoSbs#V}op=OL-&y#Rxh@(|jsLkE8W`UW8Ck5M3qz3iKp4et3iX|FN3bvtV z3=`_AkJ~*hajQ_n8FL#Y@@<;wu$`b3m=6=-SS^~ED{hSzbN~yy!mYwdf`)X^_EG2*tosl|YySJV;1%v-=QN60tmJJQhAEuGaO4X55cE|7E4;!z+&zoqZY$Ow zfNmNemSP1p2#W3!SmAe9n3NX@5}Dm+ESm;tT=y<^JhVkrEJvSIBe23R-1A$;2@>hB zjgm!0pMLZBl!9%hNJUxg?;UL3aoYBShdqAbHdFHkYj1I9!lp{m-flr`BPEB^3|i+i zBcpo8kQDHs`aOXqo{KeLYTi)SZod*Hsm{>iZmue-PBXJ;2(0m{P+RckOpZEBGi<8Wus|Y9JV)-zS#un_L8kFtLk$Hjka2v& zeSCL;aAFNIjQ8rNDop*hMSxbpJKPw(A;Yk4IYw{DD1;lMH)IsTZD90<3_`dKjNXtz z2=@XN4&h#J$P$Emfho^)B&O$(83=c+pL}yvkKS0!0WtyMen>cg={aNp!d(y3bI1sU zdpTx$jK{n8-a#4ApGR zH%OJW%x49ON$JXw_1cuLX7fR_`9MzSs~5s?#y5Qyo)f*;?Q9fJ+gMo5YA9nh*hiSQu0^&3E^IepYA+K_PcSkE$fW{1@)Lwp4Mn{NFG`5PbNG9D+u>W9p5#`V2WcW9AI#ol`UA!0WMvSR)Vl;$5bm}5*)BcmguPiRRgL!KQgS${jgsn| z+1ra!GVexb=#ypvvt|83iv7auA>3&&1tN2sb-=T8smyHj=SXG#p9*y^neBFmyLS46 zlp-^FckVddTixk1So*3esFLd4n!+IfC#XHoGP+j$N#jW}b zdItp?RUu|7lc-uZOYgc|9pIC9B7%6=0W7mM|?}4<<;__3&^Aw~a!x zAl&Qe`0jCieA-7`%2uJJAl&QCjN(z*s-7A%C|!ltfpBk>2UB%~95w{Pz0nYI*dPdZ zvn&ZYPP{?-a4D>nj9vHi=dHd@PWw{5PL4}qEFs*j$^>1AejRpmZ?#8jfpD{gaJPfA zS93J?h)0g{qOdFK(LXu+d!P|+mJsfCWddL9)FF5E$S%8y+;8X<=XCIMB+RqOEq(wX b+$?v0#qdGR6Oti!sqgg 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 KMNUMnLSTYxDQ#E) literal 0 HcmV?d00001 diff --git a/lib/app/constant.dart b/lib/app/constant.dart new file mode 100644 index 0000000..056a5a5 --- /dev/null +++ b/lib/app/constant.dart @@ -0,0 +1,213 @@ +import 'package:flutter/material.dart'; + +class Constant { + // static double designHeight = 1024; + // static double designWidth = 1440; + + // base url + static String baseURL = "http://devone.aplikasi.web.id/"; + + static String bearerName = "scan-ktp"; + + static double designHeightPhone = 844; + static double designWidthPhone = 390; + + // color theme + static Color textTrueBlack = const Color(0xff000000); + static Color textBlack = const Color(0xff212B36); + static Color textLightGrey = const Color(0xff919EAB); + static Color textOrange = const Color(0xffF15A29); + static Color textDarkGrey = const Color(0xff637381); + static Color bgAddressPresensi = const Color.fromRGBO(241, 90, 41, 0.08); + static Color textWhite = Color(0xffFDFDFD); + static Color textRed = Color(0xffFF4842); + // background upload file + static Color bgUploadFile = Color.fromRGBO(207, 207, 207, 0.20); + + // size convertion + static double getActualXPhone({ + required BuildContext context, + required double x, + }) { + return x / designWidthPhone * MediaQuery.of(context).size.width; + } + + static double getActualYPhone({ + required BuildContext context, + required double y, + }) { + return y / designHeightPhone * MediaQuery.of(context).size.height; + } + + // typography + static TextStyle titleH1_700({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 24), + fontWeight: FontWeight.w700, + ); + } + + static TextStyle titleH2_600({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 12), + fontWeight: FontWeight.w600, + ); + } + + static TextStyle logintitle_700({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 15), + fontWeight: FontWeight.w700, + ); + } + + static TextStyle titleH2_400_12({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 12), + fontWeight: FontWeight.w400, + fontFamily: 'Public Sans'); + } + + static TextStyle titleH2_600_14({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 14), + fontWeight: FontWeight.w600, + fontFamily: 'Public Sans'); + } + + static TextStyle titleH2_400_14({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 14), + fontWeight: FontWeight.w400, + fontFamily: 'Public Sans'); + } + + static TextStyle titleH1_500_18({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 18), + fontWeight: FontWeight.w500, + fontFamily: 'Public Sans'); + } + + static TextStyle titleH1_700_18({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 18), + fontWeight: FontWeight.w700, + fontFamily: 'Public Sans'); + } + + static TextStyle titleH2_700({required BuildContext context}) { + return TextStyle( + fontFamily: 'Quicksand', + fontSize: Constant.getActualYPhone(context: context, y: 14), + fontWeight: FontWeight.w700, + ); + } + + static TextStyle titleH3_700({required BuildContext context}) { + return TextStyle( + fontFamily: 'Quicksand', + fontSize: Constant.getActualYPhone(context: context, y: 16), + fontWeight: FontWeight.w700, + ); + } + + static TextStyle titleH2_500({required BuildContext context}) { + return TextStyle( + fontFamily: 'Quicksand', + fontSize: Constant.getActualYPhone(context: context, y: 12), + fontWeight: FontWeight.w500, + ); + } + + static TextStyle titleH2_400({required BuildContext context}) { + return TextStyle( + fontFamily: 'Public Sans', + fontSize: Constant.getActualYPhone(context: context, y: 12), + fontWeight: FontWeight.w400, + ); + } + + static TextStyle titlePresensiH2_700({required BuildContext context}) { + return TextStyle( + fontFamily: 'Quicksand', + fontSize: Constant.getActualYPhone(context: context, y: 24), + fontWeight: FontWeight.w700, + ); + } + + static TextStyle time_700({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 28), + fontWeight: FontWeight.w700, + fontFamily: 'Quicksand', + ); + } + + static TextStyle subtitle_600_14({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 14), + fontWeight: FontWeight.w700, + fontFamily: 'Public Sans', + ); + } + + static TextStyle subtitle_500_12({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 12), + fontWeight: FontWeight.w500, + fontFamily: 'Public Sans', + ); + } + + static TextStyle date_600({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 16), + fontWeight: FontWeight.w600, + fontFamily: 'Quicksand', + ); + } + + static TextStyle title_screen({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 24), + fontWeight: FontWeight.w600, + fontFamily: 'Public Sans', + ); + } + + static TextStyle body_16({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 16), + fontWeight: FontWeight.w600, + fontFamily: 'Public Sans', + ); + } + + static TextStyle body_14({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 14), + fontWeight: FontWeight.w600, + fontFamily: 'Public Sans', + ); + } + + static TextStyle body_12({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 12), + fontWeight: FontWeight.w600, + fontFamily: 'Public Sans', + ); + } + + static Color primaryBlue = const Color(0xff0C53B7); + static Color bgBlue = const Color(0xff1890FF).withOpacity(0.16); + static Color primaryOrange = const Color(0xffF15A29); + static Color bgOrange = const Color(0xffF15A29).withOpacity(0.16); + static Color secondaryBlue = const Color(0xff43ADA5); + static Color bgSecondaryBlue = const Color(0xff43ADA5).withOpacity(0.16); + static Color primaryGreen = const Color(0xff229A16); + static Color bgGreen = const Color(0xff54D62C).withOpacity(0.08); + static Color primaryRed = const Color(0xffB72136); + static Color bgRed = const Color(0xffFF4842).withOpacity(0.08); +} \ No newline at end of file diff --git a/lib/app/route.dart b/lib/app/route.dart new file mode 100644 index 0000000..4d77671 --- /dev/null +++ b/lib/app/route.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; + +import '../screen/splash_screen.dart'; + +const splashRoute = "/splashRoute"; + +class AppRoute { + static Route generateRoute(RouteSettings settings) { + // splash screen + if (settings.name == splashRoute) { + return MaterialPageRoute(builder: (context) { + return MediaQuery( + data: MediaQuery.of(context) + .copyWith(textScaler: TextScaler.linear(1.0), padding: EdgeInsets.all(0)), + child: SplashScreen(), + ); + }); + } + + return MaterialPageRoute(builder: (context) { + return MediaQuery( + data: MediaQuery.of(context) + .copyWith(padding: const EdgeInsets.all(0), textScaler: TextScaler.linear(1.0)), + child: SplashScreen(), + ); + }); + } +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 8e94089..e8d7a6d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,125 +1,38 @@ +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:scanktpflutter/app/route.dart'; void main() { - runApp(const MyApp()); + WidgetsFlutterBinding.ensureInitialized(); + SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitUp, + ]).then((value) => runApp(const ProviderScope(child: MyApp()))); } class MyApp extends StatelessWidget { const MyApp({super.key}); - // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( - title: 'Flutter Demo', + title: 'Scan KTP', theme: ThemeData( - // This is the theme of your application. - // - // TRY THIS: Try running your application with "flutter run". You'll see - // the application has a purple toolbar. Then, without quitting the app, - // try changing the seedColor in the colorScheme below to Colors.green - // and then invoke "hot reload" (save your changes or press the "hot - // reload" button in a Flutter-supported IDE, or press "r" if you used - // the command line to start the app). - // - // Notice that the counter didn't reset back to zero; the application - // state is not lost during the reload. To reset the state, use hot - // restart instead. - // - // This works for code too, not just values: Most code changes can be - // tested with just a hot reload. - colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), - useMaterial3: true, + primarySwatch: Colors.blue, ), - home: const MyHomePage(title: 'Flutter Demo Home Page'), - ); - } -} - -class MyHomePage extends StatefulWidget { - const MyHomePage({super.key, required this.title}); - - // This widget is the home page of your application. It is stateful, meaning - // that it has a State object (defined below) that contains fields that affect - // how it looks. - - // This class is the configuration for the state. It holds the values (in this - // case the title) provided by the parent (in this case the App widget) and - // used by the build method of the State. Fields in a Widget subclass are - // always marked "final". - - final String title; - - @override - State createState() => _MyHomePageState(); -} - -class _MyHomePageState extends State { - int _counter = 0; - - void _incrementCounter() { - setState(() { - // This call to setState tells the Flutter framework that something has - // changed in this State, which causes it to rerun the build method below - // so that the display can reflect the updated values. If we changed - // _counter without calling setState(), then the build method would not be - // called again, and so nothing would appear to happen. - _counter++; - }); - } - - @override - Widget build(BuildContext context) { - // This method is rerun every time setState is called, for instance as done - // by the _incrementCounter method above. - // - // The Flutter framework has been optimized to make rerunning build methods - // fast, so that you can just rebuild anything that needs updating rather - // than having to individually change instances of widgets. - return Scaffold( - appBar: AppBar( - // TRY THIS: Try changing the color here to a specific color (to - // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar - // change color while the other colors stay the same. - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - // Here we take the value from the MyHomePage object that was created by - // the App.build method, and use it to set our appbar title. - title: Text(widget.title), - ), - body: Center( - // Center is a layout widget. It takes a single child and positions it - // in the middle of the parent. - child: Column( - // Column is also a layout widget. It takes a list of children and - // arranges them vertically. By default, it sizes itself to fit its - // children horizontally, and tries to be as tall as its parent. - // - // Column has various properties to control how it sizes itself and - // how it positions its children. Here we use mainAxisAlignment to - // center the children vertically; the main axis here is the vertical - // axis because Columns are vertical (the cross axis would be - // horizontal). - // - // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint" - // action in the IDE, or press "p" in the console), to see the - // wireframe for each widget. - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'You have pushed the button this many times:', - ), - Text( - '$_counter', - style: Theme.of(context).textTheme.headlineMedium, - ), - ], - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), - ), // This trailing comma makes auto-formatting nicer for build methods. + scrollBehavior: const MaterialScrollBehavior().copyWith( + dragDevices: { + PointerDeviceKind.mouse, + PointerDeviceKind.touch, + PointerDeviceKind.stylus, + PointerDeviceKind.unknown, + }, + ), + debugShowCheckedModeBanner: false, + initialRoute: splashRoute, + onGenerateRoute: AppRoute.generateRoute, ); } } diff --git a/lib/screen/splash_screen.dart b/lib/screen/splash_screen.dart new file mode 100644 index 0000000..e215649 --- /dev/null +++ b/lib/screen/splash_screen.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../app/constant.dart'; + +class SplashScreen extends HookConsumerWidget { + const SplashScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [ + SystemUiOverlay.bottom, + ]); + + return Scaffold( + backgroundColor: Constant.textWhite, + body: Column( + children: [ + // atas + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + SizedBox( + width: Constant.getActualXPhone(context: context, x: 246), + child: Image.asset( + 'images/splashatas.png', + fit: BoxFit.fitWidth, + ), + ), + ], + ), + Spacer(), + // logo + Center( + child: Image.asset( + 'images/logo.png', + width: Constant.getActualXPhone(context: context, x: 164), + ), + ), + Spacer(), + // bawah + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SizedBox( + width: Constant.getActualXPhone(context: context, x: 246), + child: Image.asset( + 'images/splashbawah.png', + fit: BoxFit.fitWidth, + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 4609f07..740d51f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -67,9 +67,11 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + - images/logo.png + - images/splash.png + - images/splashatas.png + - images/splashbawah.png # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/to/resolution-aware-images