From 32abcb60dcfb045f23691daa2f53a05fffc3fea1 Mon Sep 17 00:00:00 2001 From: sindhu Date: Sat, 15 Feb 2025 18:32:12 +0700 Subject: [PATCH] step 8 : slicing home screen fix --- images/iconbarcode.png | Bin 0 -> 19100 bytes images/icongender.png | Bin 0 -> 2106 bytes lib/app/constant.dart | 27 ++++- lib/screen/home/card_riwayat_scan.dart | 145 +++++++++++++++++++++++++ lib/screen/home/home_screen.dart | 79 ++++++++++++-- lib/screen/login/login_screen.dart | 4 - pubspec.lock | 8 ++ pubspec.yaml | 3 + 8 files changed, 251 insertions(+), 15 deletions(-) create mode 100644 images/iconbarcode.png create mode 100644 images/icongender.png create mode 100644 lib/screen/home/card_riwayat_scan.dart diff --git a/images/iconbarcode.png b/images/iconbarcode.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb84e4d29dfc6ac9d0bf2048519088d04469f90 GIT binary patch literal 19100 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 literal 0 HcmV?d00001 diff --git a/lib/app/constant.dart b/lib/app/constant.dart index bcb4a89..6e6fcac 100644 --- a/lib/app/constant.dart +++ b/lib/app/constant.dart @@ -18,12 +18,10 @@ class Constant { static Color bgRed = const Color(0xffFF4842).withOpacity(0.08); static Color bgGrey = const Color(0xffF9F9F9); static Color bgBlue = Colors.blue; + static Color bgIcon = const Color(0xffA8CF45); + static Color textCardGrey = const Color.fromRGBO(0, 0, 0, 0.60); - 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 textWhite = Color(0xffFDFDFD); static Color textRed = Color(0xffFF4842); // background upload file @@ -45,6 +43,20 @@ class Constant { } // typography + static TextStyle titleRiwayat({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 20), + fontWeight: FontWeight.w500, + ); + } + + static TextStyle cardText({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 14), + fontWeight: FontWeight.w400, + ); + } + static TextStyle title_700({required BuildContext context}) { return TextStyle( fontSize: Constant.getActualYPhone(context: context, y: 36), @@ -66,6 +78,13 @@ class Constant { ); } + static TextStyle titleInputan600({required BuildContext context}) { + return TextStyle( + fontSize: Constant.getActualYPhone(context: context, y: 16), + fontWeight: FontWeight.w600, + ); + } + static TextStyle titleButton500({required BuildContext context}) { return TextStyle( fontSize: Constant.getActualYPhone(context: context, y: 15), diff --git a/lib/screen/home/card_riwayat_scan.dart b/lib/screen/home/card_riwayat_scan.dart new file mode 100644 index 0000000..81bba90 --- /dev/null +++ b/lib/screen/home/card_riwayat_scan.dart @@ -0,0 +1,145 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../../app/constant.dart'; + +class CardRiwayatScan extends HookConsumerWidget { + const CardRiwayatScan({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [ + SystemUiOverlay.bottom, + ]); + + return GestureDetector( + onTap: () { + FocusManager.instance.primaryFocus!.unfocus(); + }, + child: Card( + elevation: 2, + color: Constant.textWhite, + child: Padding( + padding: EdgeInsets.all( + Constant.getActualYPhone(context: context, y: 12), + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '3171234567890123', + style: Constant.titleInputan600(context: context).copyWith( + color: Constant.textBlack, + ), + ), + Icon( + Icons.edit, + color: Constant.bgButton, + size: 20, + ), + ], + ), + SizedBox( + height: Constant.getActualYPhone( + context: context, + y: 12, + ), + ), + // row nama + Row( + children: [ + Icon( + Icons.person_2_outlined, + color: Constant.bgIcon, + size: 20, + ), + SizedBox( + width: Constant.getActualXPhone( + context: context, + x: 8, + ), + ), + Text( + 'MIRA SETIAWAN', + style: Constant.cardText(context: context).copyWith( + color: Constant.textCardGrey, + ), + ), + ], + ), + // row nama + SizedBox( + height: Constant.getActualYPhone( + context: context, + y: 10, + ), + ), + // row dob + Row( + children: [ + Icon( + Icons.date_range_outlined, + color: Constant.bgIcon, + size: 20, + ), + SizedBox( + width: Constant.getActualXPhone( + context: context, + x: 8, + ), + ), + Text( + '18-02-1996', + style: Constant.cardText(context: context).copyWith( + color: Constant.textCardGrey, + ), + ), + ], + ), + // row dob + SizedBox( + height: Constant.getActualYPhone( + context: context, + y: 10, + ), + ), + // row jenis kelamin + Row( + children: [ + Image.asset( + 'images/icongender.png', + width: Constant.getActualXPhone( + context: context, + x: 20, + ), + height: Constant.getActualYPhone( + context: context, + y: 20, + ), + fit: BoxFit.cover, + ), + SizedBox( + width: Constant.getActualXPhone( + context: context, + x: 8, + ), + ), + Text( + 'Perempuan', + style: Constant.cardText(context: context).copyWith( + color: Constant.textCardGrey, + ), + ), + ], + ), + // row jenis kelamin + ], + ), + ), + ), + ); + } +} diff --git a/lib/screen/home/home_screen.dart b/lib/screen/home/home_screen.dart index 568ec24..4e87ebd 100644 --- a/lib/screen/home/home_screen.dart +++ b/lib/screen/home/home_screen.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:scanktpflutter/screen/home/card_riwayat_scan.dart'; import '../../app/constant.dart'; import '../../app/route.dart'; @@ -11,6 +13,10 @@ class HomeScreen extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [ + SystemUiOverlay.bottom, + ]); + final currentUser = ref.watch(currentUserProvider); useEffect(() { @@ -51,7 +57,6 @@ class HomeScreen extends HookConsumerWidget { y: 34, ), ), - Text(username), // button scan ktp Padding( padding: EdgeInsets.only( @@ -83,14 +88,23 @@ class HomeScreen extends HookConsumerWidget { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon( - Icons.scanner, - color: Constant.textWhite, - size: 24, + Image.asset( + 'images/iconbarcode.png', + width: Constant.getActualXPhone( + context: context, + x: 20, + ), + height: Constant.getActualYPhone( + context: context, + y: 20, + ), + fit: BoxFit.cover, ), SizedBox( - width: - Constant.getActualXPhone(context: context, x: 10), + width: Constant.getActualXPhone( + context: context, + x: 10, + ), ), Text( 'SCAN KTP BARU', @@ -104,6 +118,57 @@ class HomeScreen extends HookConsumerWidget { ), ), ), + SizedBox( + height: Constant.getActualYPhone( + context: context, + y: 56, + ), + ), + Padding( + padding: EdgeInsets.only( + left: Constant.getActualXPhone( + context: context, + x: 20, + ), + right: Constant.getActualXPhone( + context: context, + x: 20, + ), + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Riwayat', + style: + Constant.titleRiwayat(context: context).copyWith( + color: Constant.textBlack, + ), + ), + Text( + '20 Scan Terakhir', + style: Constant.titleInputan500(context: context) + .copyWith( + color: Constant.inputanGrey, + ), + ), + ], + ), + SizedBox( + height: Constant.getActualYPhone( + context: context, + y: 24, + ), + ), + + // card riwayat + CardRiwayatScan(), + // card riwayat + ], + ), + ), ], ), ), diff --git a/lib/screen/login/login_screen.dart b/lib/screen/login/login_screen.dart index 31d4f15..5435d8a 100644 --- a/lib/screen/login/login_screen.dart +++ b/lib/screen/login/login_screen.dart @@ -1,12 +1,8 @@ -import 'dart:convert'; - import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:scanktpflutter/app/route.dart'; -import 'package:scanktpflutter/model/auth_model.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import '../../app/constant.dart'; import '../../provider/current_user_provider.dart'; diff --git a/pubspec.lock b/pubspec.lock index 3c7347d..12572c9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -160,6 +160,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.20.2" + jiffy: + dependency: "direct main" + description: + name: jiffy + sha256: "1c1b86459969ff9f32dc5b0ffe392f1e08181e66396cf9dd8fa7c90552a691af" + url: "https://pub.dev" + source: hosted + version: "6.3.2" leak_tracker: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d2b9a89..9ae446f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,6 +43,7 @@ dependencies: shared_preferences: ^2.5.2 equatable: ^2.0.7 top_snackbar_flutter: ^3.2.0 + jiffy: ^6.3.1 dev_dependencies: flutter_test: @@ -73,6 +74,8 @@ flutter: - images/splashatas.png - images/splashbawah.png - images/vektoratas.png + - images/icongender.png + - images/iconbarcode.png # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/to/resolution-aware-images