update
This commit is contained in:
parent
1ff6fc584e
commit
36af776ca3
|
|
@ -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
|
||||||
// =============================
|
// =============================
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue