From eb3fd7aca3d55e434b9f287d413f6242b3d1a234 Mon Sep 17 00:00:00 2001 From: Samsularifin01 <158025491+Samsularifin01@users.noreply.github.com> Date: Thu, 11 Jun 2026 20:17:49 +0700 Subject: [PATCH] add token session login --- lib/main.dart | 25 ++++++++++++++++++++----- lib/services/api_config.dart | 3 ++- lib/services/auth_service.dart | 15 +++++++++++++++ test/widget_test.dart | 2 +- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index db3cc39..9433dda 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,19 +1,34 @@ import 'package:flutter/material.dart'; -import 'screens/login_screen.dart'; +import 'package:shared_preferences/shared_preferences.dart'; -void main() { - runApp(MyApp()); +import 'screens/login_screen.dart'; +import 'screens/camera_screen.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + final SharedPreferences prefs = await SharedPreferences.getInstance(); + final String? token = prefs.getString("auth_token"); + + runApp(MyApp(isLoggedIn: token != null && token.isNotEmpty)); } class MyApp extends StatelessWidget { - const MyApp({super.key}); + final bool isLoggedIn; + + const MyApp({ + super.key, + required this.isLoggedIn, + }); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Object Detector Assist', - home: LoginScreen(), + home: isLoggedIn + ? const CameraScreen() + : const LoginScreen(), ); } } \ No newline at end of file diff --git a/lib/services/api_config.dart b/lib/services/api_config.dart index fc0bb8b..9fa5973 100644 --- a/lib/services/api_config.dart +++ b/lib/services/api_config.dart @@ -5,7 +5,7 @@ class ApiConfig { static const bool useAndroidEmulator = false; // Ganti IP ini dengan IP laptop/PC Anda saat menggunakan HP fisik (ADB). - static const String deviceHost = "192.168.18.14:8000"; + static const String deviceHost = "192.168.110.147:8000"; static String get baseUrl { if (Platform.isAndroid && useAndroidEmulator) { @@ -14,3 +14,4 @@ class ApiConfig { return "http://$deviceHost"; } } + diff --git a/lib/services/auth_service.dart b/lib/services/auth_service.dart index db5c49a..0bc5f95 100644 --- a/lib/services/auth_service.dart +++ b/lib/services/auth_service.dart @@ -54,4 +54,19 @@ class AuthService { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString(_tokenKey, token); } + + Future getToken() async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + return prefs.getString(_tokenKey); + } + + Future isLoggedIn() async { + final String? token = await getToken(); + return token != null && token.isNotEmpty; + } + + Future logout() async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.remove(_tokenKey); + } } diff --git a/test/widget_test.dart b/test/widget_test.dart index 6b07e49..afedab7 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -13,7 +13,7 @@ import 'package:smart_vision_assist/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); + await tester.pumpWidget(const MyApp(isLoggedIn: false)); // Verify that our counter starts at 0. expect(find.text('0'), findsOneWidget);