This commit is contained in:
BakoL2323 2026-04-17 12:02:31 +07:00
parent 1ff6fc584e
commit 36af776ca3
2 changed files with 66 additions and 72 deletions

View File

@ -38,18 +38,17 @@ class _LoginPageState extends State<LoginPage> {
// ============================= // =============================
// SIMPAN DATA USER // SIMPAN DATA USER
// ============================= // =============================
Future<void> saveUserData(Map<String, dynamic> user) async { Future<void> saveUserData(Map<String, dynamic> user) async {
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
await prefs.setInt('id', int.tryParse(user['id'].toString()) ?? 0);
await prefs.setString('name', user['name'] ?? '');
await prefs.setString('email', user['email'] ?? '');
await prefs.setString('address', user['address'] ?? '');
await prefs.setString('rtrw', user['rtrw'] ?? '');
await prefs.setString('role', user['role'] ?? '');
await prefs.setString('status', user['status'] ?? '');
}
await prefs.setInt('user_id', int.tryParse(user['id'].toString()) ?? 0); // FIX
await prefs.setString('name', user['name'] ?? '');
await prefs.setString('email', user['email'] ?? '');
await prefs.setString('address', user['address'] ?? '');
await prefs.setString('rtrw', user['rtrw'] ?? '');
await prefs.setString('role', user['role'] ?? '');
await prefs.setString('status', user['status'] ?? '');
}
// ============================= // =============================
// LOGIN // LOGIN
// ============================= // =============================

View File

@ -5,6 +5,7 @@ import 'package:http/http.dart' as http;
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:sijentik/component/app_theme.dart'; import 'package:sijentik/component/app_theme.dart';
import 'package:sijentik/screens/auth/login.dart'; import 'package:sijentik/screens/auth/login.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ProfilePage extends StatefulWidget { class ProfilePage extends StatefulWidget {
const ProfilePage({super.key}); const ProfilePage({super.key});
@ -20,40 +21,47 @@ class _ProfilePageState extends State<ProfilePage> {
bool isLoading = true; bool isLoading = true;
Future<int?> getUserId() async {
final prefs = await SharedPreferences.getInstance();
return prefs.getInt('user_id');
}
// ========================== // ==========================
// GET PROFILE // GET PROFILE
// ========================== // ==========================
Future getProfile() async { Future getProfile() async {
try { try {
final response = await http.get( int? userId = await getUserId();
Uri.parse("http://192.168.0.118:8000/api/profile?user_id=4"),
headers: {"Accept": "application/json"},
);
print(response.statusCode); print("USER ID: $userId"); // debug
print(response.body);
if (response.statusCode == 200) { if (userId == null) {
final data = jsonDecode(response.body); setState(() => isLoading = false);
return;
}
final response = await http.get(
Uri.parse("http://192.168.0.118:8000/api/profile?user_id=$userId"),
headers: {"Accept": "application/json"},
);
print(response.body);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
setState(() {
user = data['user'];
isLoading = false;
});
} else {
setState(() {
isLoading = false;
});
print("Error API");
}
} catch (e) {
setState(() { setState(() {
user = data['user'];
isLoading = false; isLoading = false;
}); });
print("Error: $e"); } else {
setState(() => isLoading = false);
} }
} catch (e) {
setState(() => isLoading = false);
print(e);
} }
}
// ========================== // ==========================
// PICK IMAGE // PICK IMAGE
// ========================== // ==========================
@ -73,57 +81,44 @@ class _ProfilePageState extends State<ProfilePage> {
// ========================== // ==========================
// UPLOAD PHOTO // UPLOAD PHOTO
// ========================== // ==========================
Future uploadPhoto() async { Future uploadPhoto() async {
try { try {
setState(() { int? userId = await getUserId();
isLoading = true;
});
var request = http.MultipartRequest( var request = http.MultipartRequest(
"POST", "POST",
Uri.parse("http://192.168.0.118:8000/api/upload-photo"), Uri.parse("http://192.168.0.118:8000/api/upload-photo"),
); );
request.headers['Accept'] = 'application/json'; request.fields['user_id'] = userId.toString();
request.fields['user_id'] = user?['id'].toString() ?? "0";
request.files.add( request.files.add(
await http.MultipartFile.fromPath( await http.MultipartFile.fromPath(
'profile_photo', 'profile_photo',
_imageFile!.path, _imageFile!.path,
), ),
); );
var streamedResponse = await request.send(); var streamedResponse = await request.send();
var response = await http.Response.fromStream(streamedResponse); var response = await http.Response.fromStream(streamedResponse);
print(response.statusCode); print(response.body);
print(response.body);
if (response.statusCode == 200) { if (response.statusCode == 200) {
setState(() { await getProfile();
_imageFile = null; } else {
}); print("Upload gagal");
await getProfile(); // refresh
} else {
setState(() {
isLoading = false;
});
print("Upload gagal");
}
} catch (e) {
setState(() {
isLoading = false;
});
print("Error upload: $e");
} }
} catch (e) {
print(e);
} }
}
@override @override
void initState() { void initState() {
super.initState(); super.initState();
getProfile(); getProfile();
} }
@override @override