MIF_E31222653/adminkurir/lib/screens/courier/courier_profile_screen.dart

210 lines
8.3 KiB
Dart

import 'package:flutter/material.dart';
class CourierProfileScreen extends StatefulWidget {
const CourierProfileScreen({super.key});
@override
State<CourierProfileScreen> createState() => _CourierProfileScreenState();
}
class _CourierProfileScreenState extends State<CourierProfileScreen> {
final TextEditingController _nameController = TextEditingController(text: 'Kurir 1');
final TextEditingController _emailController = TextEditingController(text: 'kurirpolije1@gmail.com');
final TextEditingController _phoneController = TextEditingController(text: '0888855552222');
bool _isEditingName = false;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
automaticallyImplyLeading: false,
title: const Align(
alignment: Alignment.centerLeft,
child: Text('Edit Profil', style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold, fontSize: 20)),
),
actions: [
Padding(
padding: const EdgeInsets.only(right: 16),
child: Container(
decoration: BoxDecoration(
color: Colors.blue[50],
borderRadius: BorderRadius.circular(12),
),
child: IconButton(
icon: const Icon(Icons.logout, color: Colors.blue),
onPressed: () {
Navigator.of(context).pushNamedAndRemoveUntil('/login', (route) => false);
},
),
),
),
],
),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 12),
Center(
child: Stack(
children: [
Container(
width: 120,
height: 120,
decoration: BoxDecoration(
color: const Color.fromARGB(255, 108, 171, 222),
shape: BoxShape.circle,
),
child: Center(
child: Image.asset('assets/images/profile.png', width: 80, height: 80),
),
),
Positioned(
bottom: 10,
right: 10,
child: Container(
decoration: BoxDecoration(
color: Colors.yellow[700],
shape: BoxShape.circle,
border: Border.all(color: Colors.white, width: 2),
),
padding: const EdgeInsets.all(4),
child: const Icon(Icons.edit, size: 18, color: Colors.white),
),
),
],
),
),
const SizedBox(height: 28),
// Nama Kurir
Align(
alignment: Alignment.centerLeft,
child: Text('Nama Kurir', style: TextStyle(fontSize: 14, color: Colors.grey[700])),
),
const SizedBox(height: 6),
Row(
children: [
Expanded(
child: TextField(
controller: _nameController,
enabled: _isEditingName,
decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(18),
borderSide: BorderSide(color: Colors.grey[300]!),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(18),
borderSide: BorderSide(color: Colors.grey[300]!),
),
disabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(18),
borderSide: BorderSide(color: Colors.grey[300]!),
),
isDense: true,
),
style: const TextStyle(fontSize: 15),
),
),
const SizedBox(width: 8),
InkWell(
onTap: () {
setState(() {
_isEditingName = !_isEditingName;
});
},
child: Container(
padding: const EdgeInsets.all(6),
decoration: BoxDecoration(
color: Colors.blue[50],
borderRadius: BorderRadius.circular(8),
),
child: Icon(Icons.edit, color: Colors.blue[700], size: 18),
),
),
],
),
const SizedBox(height: 18),
// Email
Align(
alignment: Alignment.centerLeft,
child: Text('Email', style: TextStyle(fontSize: 14, color: Colors.grey[700])),
),
const SizedBox(height: 6),
TextField(
controller: _emailController,
enabled: false,
decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(18),
borderSide: BorderSide(color: Colors.grey[300]!),
),
disabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(18),
borderSide: BorderSide(color: Colors.grey[300]!),
),
isDense: true,
),
style: const TextStyle(fontSize: 15),
),
const SizedBox(height: 18),
// Nomor Telepon
Align(
alignment: Alignment.centerLeft,
child: Text('Nomor Telepon', style: TextStyle(fontSize: 14, color: Colors.grey[700])),
),
const SizedBox(height: 6),
TextField(
controller: _phoneController,
enabled: false,
decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(18),
borderSide: BorderSide(color: Colors.grey[300]!),
),
disabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(18),
borderSide: BorderSide(color: Colors.grey[300]!),
),
isDense: true,
),
style: const TextStyle(fontSize: 15),
),
const SizedBox(height: 28),
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(vertical: 14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(14),
),
textStyle: const TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
),
child: const Text('Simpan Perubahan'),
),
),
],
),
),
),
);
}
}