import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:furibase/components/bottom_navbar.dart'; import 'package:furibase/components/main_menu.dart'; import 'package:furibase/components/scan_button.dart'; import 'package:furibase/helpers/pick_image.dart'; import 'package:flutter/foundation.dart' show kIsWeb; class AkunSaya extends StatefulWidget { @override _AkunSayaState createState() => _AkunSayaState(); } class _AkunSayaState extends State { dynamic _profileImage; dynamic _headerImage; //final ImagePicker _picker = ImagePicker(); Future _pickImage(bool isProfile) async { final imagePicker = ImagePickerHelper(); dynamic pic = await imagePicker.pickImage(); if (pic != null) { setState(() { if (isProfile) { _profileImage = pic; } else { _headerImage = pic; } }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Saya"), backgroundColor: Color.fromARGB(225, 79, 76, 182), ), backgroundColor: const Color.fromARGB(255, 255, 255, 255), body: Stack( children: [ Positioned( bottom: 0, left: 0, right: 0, child: Padding( padding: const EdgeInsets.only(top: 20.0, left: 20, right: 20), child: Container( height: MediaQuery.of(context).size.height * 0.7, width: MediaQuery.of(context).size.width, decoration: BoxDecoration( color: const Color.fromARGB(255, 205, 202, 189), borderRadius: BorderRadius.only( topLeft: Radius.circular(20), topRight: Radius.circular(20), ), ), ), ), ), Column( children: [ // Header image (bisa diubah) SizedBox( height: 80, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( bottomLeft: Radius.circular(40), bottomRight: Radius.circular(40), ), color: Color.fromARGB(225, 79, 76, 182), ), ), ), SizedBox(height: 40), Expanded( child: Padding( padding: EdgeInsets.all(20), child: ListView( padding: EdgeInsets.symmetric(horizontal: 20, vertical: 40), children: [ TextFormField( initialValue: "Cepot", decoration: const InputDecoration( border: UnderlineInputBorder(), labelText: 'Nama', labelStyle: TextStyle(color: Colors.black), ), style: TextStyle(color: Colors.black), ), TextFormField( initialValue: "cpt09", decoration: const InputDecoration( border: UnderlineInputBorder(), labelText: 'Nama Pengguna', labelStyle: TextStyle(color: Colors.black), ), style: TextStyle(color: Colors.black), ), TextFormField( initialValue: "Jl. Sentosa jaya", decoration: const InputDecoration( border: UnderlineInputBorder(), labelText: 'Alamat', labelStyle: TextStyle(color: Colors.black), ), style: TextStyle(color: Colors.black), ), TextFormField( initialValue: "******", decoration: const InputDecoration( border: UnderlineInputBorder(), labelText: 'Kata Sandi', labelStyle: TextStyle(color: Colors.black), ), style: TextStyle(color: Colors.black), ), TextFormField( initialValue: "+62923", decoration: const InputDecoration( border: UnderlineInputBorder(), labelText: 'No. HP', labelStyle: TextStyle(color: Colors.black), ), style: TextStyle(color: Colors.black), ), ], ), ), ), ], ), // Profile Picture (bisa diubah) Positioned( top: 25, left: MediaQuery.of(context).size.width / 2 - 50, child: GestureDetector( onTap: () => _pickImage(true), child: Stack( alignment: Alignment.bottomRight, children: [ CircleAvatar( radius: 50, backgroundColor: Colors.grey[300], backgroundImage: _profileImage != null ? (kIsWeb ? MemoryImage(_profileImage) as ImageProvider : FileImage(_profileImage) as ImageProvider) : null, child: _profileImage == null ? Icon(Icons.person, size: 50, color: Colors.white) : null, ), CircleAvatar( radius: 15, backgroundColor: Colors.blue, child: Icon(Icons.edit, color: Colors.white, size: 15), ), ], ), ), ), Positioned( top: 130, left: MediaQuery.of(context).size.width / 2 - 50, child: GestureDetector( onTap: () => _pickImage(true), child: Stack( alignment: Alignment.bottomRight, children: [ Text( "Nama Akun", style: TextStyle( color: Colors.deepPurple, fontSize: 18, fontWeight: FontWeight.bold, ), ), ], ), ), ), ], ), ); } Widget _buildListItem(IconData icon, String label, {bool isLogout = false}) { return ListTile( leading: Icon( icon, color: isLogout ? const Color.fromARGB(255, 181, 47, 47) : const Color.fromARGB(255, 255, 255, 255), ), title: Text(label, style: TextStyle(fontSize: 16, color: Colors.black)), trailing: Icon(Icons.arrow_forward_ios, size: 16), onTap: () {}, ); } }