import 'package:flutter/material.dart';
class PegawaiPage extends StatefulWidget {
const PegawaiPage({super.key});
@override
State<PegawaiPage> createState() => _PegawaiPageState();
}
class _PegawaiPageState extends State<PegawaiPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Data RS")),
body: ListView(
children: const [
Card(
child: ListTile(
title: const Text("Pegawai"),
),
),
Card(
child: ListTile(
title: const Text("Pasien"),
),
),
],
),
);
}
}
Kita akan memodifikasi Class pada file pegawai_page.dart. Untuk menambahkan widget diatas widget lain yang telah dibuat dapat dilakukan dengan cara, arahkan kursor pada widget, misalnya dalam hal ini adalah widget Card.
Pada bagian kiri akan muncul logo lampu, kemudian klik lampu tersebut dan pilih widget yang ingin ditambahkan atau dalam hal ini kita akan memilih Warp with widget..
Setelah itu ubah widget menjadi GestureDetector dan kita juga mengimport pegawai_detail.dart dan pasien_detail.dart serta menambahkan onTap yang kemudian akan membuka halaman Detail Pegawai dan Detail Pasien, sehingga kode untuk Class PegawaiPage menjadi
Kemudian save dan ubah menjadi seperti berikut:
import 'package:flutter/material.dart';
import 'pegawai_detail.dart';
import 'pasien_detail.dart';
import '../model/pegawai.dart';
import '../model/pasien.dart';
class PegawaiPage extends StatefulWidget {
const PegawaiPage({super.key});
@override
State<PegawaiPage> createState() => _PegawaiPageState();
}
class _PegawaiPageState extends State<PegawaiPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Data RS")),
body: ListView(
children: [
GestureDetector(
child: Card(
child: ListTile(
title: const Text("Pegawai"),
),
),
onTap: () {
Pegawai pegawai = new Pegawai(namaPegawai: "Nama Pegawai");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PegawaiDetail(pegawai: pegawai)));
},
),
GestureDetector(
child: Card(
child: ListTile(
title: const Text("Pasien"),
),
),
onTap: () {
Pasien pasien = new Pasien(namaPasien: "Nama Pasien");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PasienDetail(pasien: pasien)));
},
),
],
),
);
}
}
ui/pegawai_detail.dart
import 'package:flutter/material.dart';
import '../model/pegawai.dart';
class PegawaiDetail extends StatefulWidget {
final Pegawai pegawai;
const PegawaiDetail({super.key, required this.pegawai});
@override
State<PegawaiDetail> createState() => _PegawaiDetailState();
}
class _PegawaiDetailState extends State<PegawaiDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Detail Pegawai")),
body: Column(
children: [
SizedBox(height: 20),
Text(
"ID Pegawai : ${widget.pegawai.idPegawai}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Nama Pegawai : ${widget.pegawai.namaPegawai}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"NIP : ${widget.pegawai.nip}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Tanggal Lahir : ${widget.pegawai.tanggal_lahir}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Nomor Telepon : ${widget.pegawai.nomor_telepon}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Email : ${widget.pegawai.email}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Password : ${widget.pegawai.password}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
)
],
),
);
}
}
ui/pasien_detail.dart
import 'package:flutter/material.dart';
import '../model/pasien.dart';
class PasienDetail extends StatefulWidget {
final Pasien pasien;
const PasienDetail({super.key, required this.pasien});
@override
State<PasienDetail> createState() => _PasienDetailState();
}
class _PasienDetailState extends State<PasienDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Detail Pasien")),
body: Column(
children: [
SizedBox(height: 20),
Text(
"ID Pasien : ${widget.pasien.idPasien}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Nomor RM : ${widget.pasien.nomor_rm}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Nama Pasien : ${widget.pasien.namaPasien}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Tanggal Lahir : ${widget.pasien.tanggal_lahir}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Nomor Telepon : ${widget.pasien.nomor_telepon}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
),
SizedBox(height: 20),
Text(
"Alamat : ${widget.pasien.alamat}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.green),
child: const Text("Ubah")),
ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(primary: Colors.red),
child: const Text("Hapus")),
],
)
],
),
);
}
}
main.dart
import 'package:flutter/material.dart';
import '/ui/poli_page.dart';
import '/ui/pegawai_page.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Klinik APP',
debugShowCheckedModeBanner: false,
home: PegawaiPage(),
);
}
}
Pertemuan 6
pegawai_item.dart
import 'package:flutter/material.dart';
import '../model/pegawai.dart';
import 'pegawai_detail.dart';
class PegawaiItem extends StatelessWidget {
final Pegawai pegawai;
const PegawaiItem({super.key, required this.pegawai});
@override
Widget build(BuildContext context) {
return GestureDetector(
child: Card(
child: ListTile(
title: Text("${pegawai.namaPegawai}"),
),
),
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => PegawaiDetail(pegawai: pegawai)));
},
);
}
}
Kita juga buat pasien_item.dart untuk menampilkan data Pasien
import 'package:flutter/material.dart';
import '../model/pasien.dart';
import 'pasien_detail.dart';
class PasienItem extends StatelessWidget {
final Pasien pasien;
const PasienItem({super.key, required this.pasien});
@override
Widget build(BuildContext context) {
return GestureDetector(
child: Card(
child: ListTile(
title: Text("${pasien.namaPasien}"),
),
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PasienDetail(pasien: pasien)));
},
);
}
}
ubah File pegawai_page.dart
import 'package:flutter/material.dart';
import '../model/pegawai.dart';
import '../model/pasien.dart';
import 'pegawai_detail.dart';
import 'pasien_detail.dart';
import 'pegawai_item.dart';
import 'pasien_item.dart';
import 'pegawai_form.dart';
class PegawaiPage extends StatefulWidget {
const PegawaiPage({super.key});
@override
State<PegawaiPage> createState() => _PegawaiPageState();
}
class _PegawaiPageState extends State<PegawaiPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Data RS")),
body: ListView(
children: [
PegawaiItem(pegawai: Pegawai(namaPegawai: "Pegawai")),
PasienItem(pasien: Pasien(namaPasien: "Pasien")),
],
),
);
}
}
buat pegawai_form.dart untuk membuat form dengan icon+
import 'package:flutter/material.dart';
class PegawaiForm extends StatefulWidget {
const PegawaiForm({Key? key}) : super(key: key);
_PegawaiFormState createState() => _PegawaiFormState();
}
class _PegawaiFormState extends State<PegawaiForm> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Tambah Pegawai")),
body: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
children: [
TextField(
decoration: const InputDecoration(labelText: "Nama Pegawai")),
SizedBox(height: 20),
ElevatedButton(onPressed: () {}, child: const Text("Simpan"))
],
),
),
),
);
}
}
tambahkan kode di pegawai_page.dart pada bagian AppBar, jika diklik akan membukan PegawaiFormPertemuan 7
pada pegawai_form terdapat widget seperti TextField dan ElevatedButton akan dipisahkan ke dalam method tersendiri di dalam class
pegawai_form.dart
import 'package:flutter/material.dart';
class PegawaiForm extends StatefulWidget {
const PegawaiForm({Key? key}) : super(key: key);
_PegawaiFormState createState() => _PegawaiFormState();
}
class _PegawaiFormState extends State<PegawaiForm> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Tambah Pegawai")),
body: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
children: [_fieldNamaPegawai(), SizedBox(height: 20), _tombolSimpan()],
),
),
),
);
}
_fieldNamaPegawai() {
return TextField(
decoration: const InputDecoration(labelText: "Nama Pegawai"),
);
}
_tombolSimpan() {
return ElevatedButton(onPressed: () {}, child: const Text("Simpan"));
}
}
ubah pegawai_form.dart import halaman pegawai_detail.dart kemudian tambahkan attribute
final _namaPoliCtrl = TextEditingController();
import 'package:flutter/material.dart';
import '../model/pegawai.dart';
import 'pegawai_detail.dart';
class PegawaiForm extends StatefulWidget {
const PegawaiForm({Key? key}) : super(key: key);
_PegawaiFormState createState() => _PegawaiFormState();
}
class _PegawaiFormState extends State<PegawaiForm> {
final _formKey = GlobalKey<FormState>();
final _namaPegawaiCtrl = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Tambah Pegawai")),
body: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
children: [
_fieldNamaPegawai(),
SizedBox(height: 20),
_tombolSimpan()
],
),
),
),
);
}
_fieldNamaPegawai() {
return TextField(
decoration: const InputDecoration(labelText: "Nama Pegawai"),
controller: _namaPegawaiCtrl,
);
}
_tombolSimpan() {
return ElevatedButton(
onPressed: () {
Pegawai pegawai = new Pegawai(namaPegawai: _namaPegawaiCtrl.text);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => PegawaiDetail(pegawai: pegawai)));
},
child: const Text("Simpan"));
}
}
buat file pegawai_update_form.dart
import 'package:flutter/material.dart';
import '../model/pegawai.dart';
import 'pegawai_detail.dart';
class PegawaiUpdateForm extends StatefulWidget {
final Pegawai pegawai;
const PegawaiUpdateForm({Key? key, required this.pegawai}) : super(key: key);
_PegawaiUpdateFormState createState() => _PegawaiUpdateFormState();
}
class _PegawaiUpdateFormState extends State<PegawaiUpdateForm> {
final _formKey = GlobalKey<FormState>();
final _namaPegawaiCtrl = TextEditingController();
@override
void initState() {
super.initState();
setState(() {
_namaPegawaiCtrl.text = widget.pegawai.namaPegawai;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Ubah Data")),
body: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
children: [
_fieldNamaPegawai(),
SizedBox(height: 20),
_tombolSimpan()
],
),
),
),
);
}
_fieldNamaPegawai() {
return TextField(
decoration: const InputDecoration(labelText: "Nama Data"),
controller: _namaPegawaiCtrl,
);
}
_tombolSimpan() {
return ElevatedButton(
onPressed: () {
Pegawai pegawai = new Pegawai(namaPegawai: _namaPegawaiCtrl.text);
Navigator.pop(context);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => PegawaiDetail(pegawai: pegawai)));
},
child: const Text("Simpan Perubahan"));
}
}
ubah pegawai_detail.dart dan import pegawai_update_form.dart
import 'package:flutter/material.dart';
import 'pegawai_update_form.dart';
import '../model/pegawai.dart';
class PegawaiDetail extends StatefulWidget {
final Pegawai pegawai;
const PegawaiDetail({super.key, required this.pegawai});
@override
State<PegawaiDetail> createState() => _PegawaiDetailState();
}
class _PegawaiDetailState extends State<PegawaiDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Detail Pegawai")),
body: Column(
children: [
SizedBox(height: 20),
Text(
"Nama Pegawai : ${widget.pegawai.namaPegawai}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
)
],
),
);
}
_tombolUbah() {
return ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PegawaiUpdateForm(pegawai: widget.pegawai)));
},
style: ElevatedButton.styleFrom(backgroundColor: Colors.green),
child: const Text("Ubah"));
}
_tombolHapus() {
return ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
child: const Text("Hapus"));
}
}
Pertemuan 9
- Buat Pesan Konfirmasi hapus data untuk bagian Pegawai dan Pasien
- Jika kita lihat pada drawer, terdapat menu Beranda, Poli, Pegawai, Pasien, dan Keluar.Tugas Anda menyatukan halaman Manajemen (CRUD) Pegawai dan Pasien yang telah Anda buat sebelumnya untuk tampil saat menu pegawai atau pasien dipilih.
Alur :
Membuat Halaman dan Form Pasien
buat pasien_page.dart seperti pegawai_page.dart
import 'package:flutter/material.dart';
import '../model/pegawai.dart';
import '../model/pasien.dart';
import 'pegawai_detail.dart';
import 'pasien_detail.dart';
import 'pegawai_item.dart';
import 'pasien_item.dart';
import 'pegawai_form.dart';
import 'pasien_form.dart';
class PasienPage extends StatefulWidget {
const PasienPage({super.key});
@override
State<PasienPage> createState() => _PasienPageState();
}
class _PasienPageState extends State<PasienPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Data Pasien"),
actions: [
GestureDetector(
child: const Icon(Icons.add),
onTap: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => PasienForm()));
},
)
],
),
body: ListView(
children: [
PegawaiItem(pegawai: Pegawai(namaPegawai: "Pegawai")),
PasienItem(pasien: Pasien(namaPasien: "Pasien")),
],
),
);
}
}
buat pasien_form.dart
import 'package:flutter/material.dart';
import '../model/pasien.dart';
import 'pasien_detail.dart';
import 'pasien_page.dart';
class PasienForm extends StatefulWidget {
const PasienForm({Key? key}) : super(key: key);
_PasienFormState createState() => _PasienFormState();
}
class _PasienFormState extends State<PasienForm> {
final _formKey = GlobalKey<FormState>();
final _namaPasienCtrl = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Tambah Data")),
body: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
children: [
_fieldNamaPasien(),
SizedBox(height: 20),
_tombolSimpan()
],
),
),
),
);
}
_fieldNamaPasien() {
return TextField(
decoration: const InputDecoration(labelText: "Nama Data"),
controller: _namaPasienCtrl,
);
}
_tombolSimpan() {
return ElevatedButton(
onPressed: () {
Pasien pasien = new Pasien(namaPasien: _namaPasienCtrl.text);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => PasienDetail(pasien: pasien)));
},
child: const Text("Simpan"));
}
}
buat pasien_update_form.dart
import 'package:flutter/material.dart';
import '../model/pasien.dart';
import 'pasien_detail.dart';
class PasienUpdateForm extends StatefulWidget {
final Pasien pasien;
const PasienUpdateForm({Key? key, required this.pasien}) : super(key: key);
_PasienUpdateFormState createState() => _PasienUpdateFormState();
}
class _PasienUpdateFormState extends State<PasienUpdateForm> {
final _formKey = GlobalKey<FormState>();
final _namaPasienCtrl = TextEditingController();
@override
void initState() {
super.initState();
setState(() {
_namaPasienCtrl.text = widget.pasien.namaPasien;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Ubah Data")),
body: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
children: [
_fieldNamaPasien(),
SizedBox(height: 20),
_tombolSimpan()
],
),
),
),
);
}
_fieldNamaPasien() {
return TextField(
decoration: const InputDecoration(labelText: "Nama Data"),
controller: _namaPasienCtrl,
);
}
_tombolSimpan() {
return ElevatedButton(
onPressed: () {
Pasien pasien = new Pasien(namaPasien: _namaPasienCtrl.text);
Navigator.pop(context);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => PasienDetail(pasien: pasien)));
},
child: const Text("Simpan Perubahan"));
}
}
ubah pasien_detail.dart seperti pertemuan 7
import 'package:flutter/material.dart';
import 'pasien_update_form.dart';
import '../model/pegawai.dart';
class PasienDetail extends StatefulWidget {
final Pasien pasien;
const PasienDetail({super.key, required this.pasien});
@override
State<PasienDetail> createState() => _PasienDetailState();
}
class _PasienDetailState extends State<PasienDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Detail Pasien")),
body: Column(
children: [
SizedBox(height: 20),
Text(
"Nama Pasien : ${widget.pasien.namaPasien}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
)
],
),
);
}
_tombolUbah() {
return ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PasienUpdateForm(pasien: widget.pasien)));
},
style: ElevatedButton.styleFrom(backgroundColor: Colors.green),
child: const Text("Ubah"));
}
_tombolHapus() {
return ElevatedButton(
onPressed: () {},
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
child: const Text("Hapus"));
}
}
ubah pasien_item.dart seperti file pegawai_item.dart
import 'package:flutter/material.dart';
import '../model/pasien.dart';
import 'pasien_detail.dart';
class PasienItem extends StatelessWidget {
final Pasien pasien;
const PasienItem({super.key, required this.pasien});
@override
Widget build(BuildContext context) {
return GestureDetector(
child: Card(
child: ListTile(
title: Text("${pasien.namaPasien}"),
),
),
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => PasienDetail(pasien: pasien)));
},
);
}
}
Menampilkan Pesan Konfirmasi Hapus Data
pada pegawai_detail.dart import pegawai_page.dart dan modifikasi fungsi_tombolHapus yang ketika diklik akan muncul pesan konfirmasi penghapusan data
import 'package:flutter/material.dart';
import 'pegawai_page.dart';
import 'pegawai_update_form.dart';
import '../model/pegawai.dart';
class PegawaiDetail extends StatefulWidget {
final Pegawai pegawai;
const PegawaiDetail({super.key, required this.pegawai});
@override
State<PegawaiDetail> createState() => _PegawaiDetailState();
}
class _PegawaiDetailState extends State<PegawaiDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Detail Pegawai")),
body: Column(
children: [
SizedBox(height: 20),
Text(
"Nama Pegawai : ${widget.pegawai.namaPegawai}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"ID Pegawai : ${widget.pegawai.idPegawai}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"NIP : ${widget.pegawai.nip}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Tanggal Lahir : ${widget.pegawai.tanggal_lahir}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Nomor Telepon : ${widget.pegawai.nomor_telepon}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Email : ${widget.pegawai.email}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Password : ${widget.pegawai.password}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
)
],
),
);
}
_tombolUbah() {
return ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PegawaiUpdateForm(pegawai: widget.pegawai)));
},
style: ElevatedButton.styleFrom(backgroundColor: Colors.green),
child: const Text("Ubah"));
}
_tombolHapus() {
return ElevatedButton(
onPressed: () {
AlertDialog alertDialog = AlertDialog(
content: const Text("Yakin ingin menghapus data ini?"),
actions: [
// tombol ya
ElevatedButton(
onPressed: () {
Navigator.pop(context);
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => PegawaiPage()));
},
child: const Text("YA"),
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
),
// tombol batal
ElevatedButton(
onPressed: () {
Navigator.pop(context);
},
child: Text("Tidak"),
style: ElevatedButton.styleFrom(backgroundColor: Colors.green),
)
],
);
showDialog(context: context, builder: (context) => alertDialog);
},
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
child: const Text("Hapus"));
}
}
pada pasien_detail.dart import pasien_page.dart dan modifikasi fungsi _tombolHapus yang ketika diklik akan muncul pesan konfirmasi penghapusan data
import 'package:flutter/material.dart';
import 'pasien_page.dart';
import 'pasien_update_form.dart';
import '../model/pasien.dart';
class PasienDetail extends StatefulWidget {
final Pasien pasien;
const PasienDetail({super.key, required this.pasien});
@override
State<PasienDetail> createState() => _PasienDetailState();
}
class _PasienDetailState extends State<PasienDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Detail Pasien")),
body: Column(
children: [
SizedBox(height: 20),
Text(
"Nama Pasien : ${widget.pasien.namaPasien}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"ID Pasien : ${widget.pasien.idPasien}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Nomor RM : ${widget.pasien.nomor_rm}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Tanggal Lahir : ${widget.pasien.tanggal_lahir}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Nomor Telepon : ${widget.pasien.nomor_telepon}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
),
SizedBox(height: 20),
Text(
"Alamat : ${widget.pasien.alamat}",
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_tombolUbah(),
_tombolHapus(),
],
)
],
),
);
}
_tombolUbah() {
return ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PasienUpdateForm(pasien: widget.pasien)));
},
style: ElevatedButton.styleFrom(backgroundColor: Colors.green),
child: const Text("Ubah"));
}
_tombolHapus() {
return ElevatedButton(
onPressed: () {
AlertDialog alertDialog = AlertDialog(
content: const Text("Yakin ingin menghapus data ini?"),
actions: [
// tombol ya
ElevatedButton(
onPressed: () {
Navigator.pop(context);
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => PasienPage()));
},
child: const Text("YA"),
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
),
// tombol batal
ElevatedButton(
onPressed: () {
Navigator.pop(context);
},
child: Text("Tidak"),
style: ElevatedButton.styleFrom(backgroundColor: Colors.green),
)
],
);
showDialog(context: context, builder: (context) => alertDialog);
},
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
child: const Text("Hapus"));
}
}
Pada sidebar import pegawai_page.dart dan pasien_page.dart, dan buat ListTile Pegawai dan Pasien
import 'package:flutter/material.dart';
import '../ui/beranda.dart';
import '../ui/login.dart';
import '../ui/poli_page.dart';
import '../ui/pasien_page.dart';
import '../ui/pegawai_page.dart';
class Sidebar extends StatelessWidget {
const Sidebar({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: [
UserAccountsDrawerHeader(
accountName: Text("Admin"),
accountEmail: Text("admin@admin.com")),
ListTile(
leading: Icon(Icons.home),
title: Text("Beranda"),
onTap: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => Beranda()));
},
),
ListTile(
leading: Icon(Icons.accessible),
title: Text("Poli"),
onTap: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => PoliPage()));
},
),
ListTile(
leading: Icon(Icons.people),
title: Text("Pegawai"),
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => PegawaiPage()));
},
),
ListTile(
leading: Icon(Icons.account_box_sharp),
title: Text("Pasien"),
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => PasienPage()));
},
),
ListTile(
leading: Icon(Icons.logout_rounded),
title: Text("Keluar"),
onTap: () {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (context) => Login()),
(Route<dynamic> route) => false);
},
)
],
),
);
}
}
buka file pegawai_page.dart pada bagian Scaffold tambahkan parameter drawer dan masukan class Sidebar pada parameter drawer tersebut
import 'package:flutter/material.dart';
import '../widget/sidebar.dart';
import '../model/pegawai.dart';
import '../model/pasien.dart';
import 'pegawai_detail.dart';
import 'pasien_detail.dart';
import 'pegawai_item.dart';
import 'pasien_item.dart';
import 'pegawai_form.dart';
import 'pasien_form.dart';
class PegawaiPage extends StatefulWidget {
const PegawaiPage({super.key});
@override
State<PegawaiPage> createState() => _PegawaiPageState();
}
class _PegawaiPageState extends State<PegawaiPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: Sidebar(),
appBar: AppBar(
title: const Text("Data Pegawai"),
actions: [
GestureDetector(
child: const Icon(Icons.add),
onTap: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => PegawaiForm()));
},
)
],
),
body: ListView(
children: [
PegawaiItem(pegawai: Pegawai(namaPegawai: "Pegawai")),
PasienItem(pasien: Pasien(namaPasien: "Pasien")),
],
),
);
}
}
buka file pasien_page.dart pada bagian Scaffold tambahkan parameter drawer dan masukan class Sidebar pada parameter drawer tersebut
import 'package:flutter/material.dart';
import '../widget/sidebar.dart';
import '../model/pegawai.dart';
import '../model/pasien.dart';
import 'pegawai_detail.dart';
import 'pasien_detail.dart';
import 'pegawai_item.dart';
import 'pasien_item.dart';
import 'pegawai_form.dart';
import 'pasien_form.dart';
class PasienPage extends StatefulWidget {
const PasienPage({super.key});
@override
State<PasienPage> createState() => _PasienPageState();
}
class _PasienPageState extends State<PasienPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
drawer: Sidebar(),
appBar: AppBar(
title: const Text("Data Pasien"),
actions: [
GestureDetector(
child: const Icon(Icons.add),
onTap: () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => PasienForm()));
},
)
],
),
body: ListView(
children: [
PegawaiItem(pegawai: Pegawai(namaPegawai: "Pegawai")),
PasienItem(pasien: Pasien(namaPasien: "Pasien")),
],
),
);
}
}
Komentar ini telah dihapus oleh pengarang.
BalasHapusmaaf pertemuan 6 - 9 ya mana bang
BalasHapusbang pertemuan 10 - 12 tidak ada kah?
BalasHapus