OLEH KELOMPOK 5
dengan anggota kelompok:
-Dimas hari prasetyo (06) (ketua)
-Didan diandra (05)
-Lintang putri yulianti (17)
-Muhammad hamam nazrulloh (24)
-David tutan hamun (04)
Asssalamualaikum warahmatullahi wabarakatu
pada laporan ini kami dari kelompok 5 yang diketuai oleh Dimas hari
prasetyo akan membuat aplikasi yang berjalan dibawah framework
flutter dengan tema kesiswaan.
File home.dart
import 'package:flutter/material.dart';
import 'kesiswaan.dart';
import 'point.dart';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Kesiswaan'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child:
Table(
columnWidths: const {
0: FlexColumnWidth(2.0),
1: FlexColumnWidth(3.0),
},
children: [
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Tambahkan Pelanggaran'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SalesForm()),
);
},
child: Text('+'),
),
),
),
],
),
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('List Point'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => point()),
);
},
child: Text('Lihat'),
),
),
),
],
),
],
),
),
);
}
}
Setiap sel dalam tabel memiliki TableCell yang berisi teks dan sebuah
ElevatedButton. Dua tombol ini memiliki fungsionalitas onPressed yang
berbeda. Tombol pertama digunakan untuk menambahkan pelanggaran
dan mengarahkan pengguna ke layar SalesForm menggunakan
Navigator.push. Tombol kedua digunakan untuk melihat daftar poin dan
mengarahkan pengguna ke layar point menggunakan Navigator.push.
Seperti yang terlihat, tombol-tombol ini terhubung ke layar lain dalam
aplikasi menggunakan MaterialPageRoute, yang memungkinkan
navigasi antar layar.
File kesiswaan.dart
import 'package:flutter/material.dart';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Form'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: nisController,
decoration: InputDecoration(labelText: 'NIS Siswa'),
),
SizedBox(height: 10),
TextField(
controller: namaSiswaController,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: 'Nama Siswa'),
),
SizedBox(height: 10),
TextField(
controller: kelasController,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: 'Kelas'),
),
TextField(
controller: jenisPelanggaranController,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: 'Jenis Pelanggaran'),
),
SizedBox(height: 10),
TextField(
controller: pointController,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: 'Point'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
_navigateToSummary(context);
},
child: Text('Input'),
),
],
),
),
);
}
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => StudentSummary(
nis: int.tryParse(nisController.text) ?? 0,
nama: kelasController.text.isEmpty ? defaultKelas :
namaSiswaController.text,
kelas: namaSiswaController.text.isEmpty ? defaultKelas :
kelasController.text,
pelanggaran: jenisPelanggaranController.text.isEmpty ?
defaultKelas : jenisPelanggaranController.text,
point: int.tryParse(pointController.text) ?? 0,
),
),
);
}
StudentSummary({
required this.nis,
required this.nama,
required this.kelas,
required this.pelanggaran,
required this.point,
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Rekap Siswa'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Table(
columnWidths: const {
0: FlexColumnWidth(2.0),
1: FlexColumnWidth(3.0),
},
border: TableBorder.all(),
children: [
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('NIS'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Nama'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Kelas'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Jenis Pelanggaran'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Point'),
),
),
],
),
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('$nis'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('$nama'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('$kelas'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('$pelanggaran'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('$point'),
),
),
],
),
],
),
),
);
}
}
’
Penjelasan dari source code diatas
SalesForm, adalah bentuk formulir yang memungkinkan pengguna
memasukkan informasi tentang siswa terkait pelanggaran yang
dilakukan. Formulir ini memiliki beberapa bidang teks untuk NIS siswa,
nama siswa, kelas, jenis pelanggaran, dan poin.
Setelah pengguna mengisi formulir dan menekan tombol "Input", aplikasi
akan memindahkan pengguna ke layar kedua, yaitu StudentSummary.
Di sini, informasi yang dimasukkan sebelumnya ditampilkan dalam
bentuk tabel yang menampilkan detail siswa terkait NIS, nama, kelas,
jenis pelanggaran, dan poin yang telah dimasukkan.
File point.dart
import 'package:flutter/material.dart';
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("List Point")),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Table(
columnWidths: const {
0: FlexColumnWidth(2.0),
1: FlexColumnWidth(3.0),
},
border: TableBorder.all(),
children: [
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Jenis Pelanggaran'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Point'),
),
),
],
),
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Terlambat'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('5'),
),
),
],
),
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Tidak mengumpulkan tugas'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('5'),
),
),
],
),
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Bolos'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('10'),
),
),
],
),
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Merusak Fasilitas'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('40'),
),
),
],
),
TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Keluar sekolah tidak ijin'),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text('70'),
),
),
],
),
],
),
),
),
);
}
}
penejelasan dari source code diatas
File main.dart
import 'kesiswaan.dart';
import 'home.dart';
import 'package:flutter/material.dart';