Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:convert';
- import 'package:flutter/material.dart';
- void main() {
- runApp(MyApp());
- }
- class MyApp extends StatefulWidget {
- @override
- _MyAppState createState() => _MyAppState();
- }
- class _MyAppState extends State<MyApp> {
- List<Peserta> pesertaList = [
- Peserta("Peserta 1", "hadir", "sudah"),
- Peserta("Peserta 2", "hadir", "belum"),
- Peserta("Peserta 3", "ijin", "sudah"),
- Peserta("Peserta 4", "hadir", "sudah"),
- Peserta("Peserta 5", "ijin", "belum"),
- ];
- String selectedKehadiran = "hadir";
- String selectedStatus = "sudah";
- List<Peserta> filteredList = [];
- @override
- void initState() {
- super.initState();
- // Inisialisasi filteredList dengan semua peserta saat aplikasi pertama kali dimulai.
- filteredList = pesertaList;
- }
- // Fungsi untuk memfilter peserta berdasarkan kedua kriteria
- void filterPeserta() {
- setState(() {
- filteredList = pesertaList.where((peserta) {
- if ((selectedKehadiran == "semua" || peserta.kehadiran == selectedKehadiran) &&
- (selectedStatus == "semua" || peserta.status == selectedStatus)) {
- return true;
- }
- return false;
- }).toList();
- });
- }
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- home: Scaffold(
- appBar: AppBar(
- title: Text('Filter Peserta'),
- ),
- body: Column(
- children: [
- Row(
- children: [
- FutureBuilder(
- // Menggantilah dengan pemanggilan metode untuk mendapatkan JSON yang sesuai dengan pilihan ChoiceChip.
- future: loadChoiceKehadiran(),
- builder: (context, snapshot) {
- if (snapshot.hasData) {
- List<String> choices = json.decode(snapshot.data.toString());
- return Wrap(
- children: choices.map((choice) {
- return ChoiceChip(
- label: Text(choice),
- selected: selectedKehadiran == choice,
- onSelected: (selected) {
- setState(() {
- selectedKehadiran = selected ? choice : 'semua';
- filterPeserta();
- });
- },
- );
- }).toList(),
- );
- } else {
- return CircularProgressIndicator();
- }
- },
- ),
- FutureBuilder(
- // Menggantilah dengan pemanggilan metode untuk mendapatkan JSON yang sesuai dengan pilihan ChoiceChip.
- future: loadChoiceStatus(),
- builder: (context, snapshot) {
- if (snapshot.hasData) {
- List<String> choices = json.decode(snapshot.data.toString());
- return Wrap(
- children: choices.map((choice) {
- return ChoiceChip(
- label: Text(choice),
- selected: selectedStatus == choice,
- onSelected: (selected) {
- setState(() {
- selectedStatus = selected ? choice : 'semua';
- filterPeserta();
- });
- },
- );
- }).toList(),
- );
- } else {
- return CircularProgressIndicator();
- }
- },
- ),
- ],
- ),
- Expanded(
- child: ListView.builder(
- itemCount: filteredList.length,
- itemBuilder: (context, index) {
- return ListTile(
- title: Text(filteredList[index].nama),
- );
- },
- ),
- ),
- ],
- ),
- ),
- );
- }
- // Metode untuk mendapatkan JSON pilihan Choice Kehadiran.
- Future<String> loadChoiceKehadiran() async {
- // Simulasi pemanggilan data JSON dari sumber eksternal.
- await Future.delayed(Duration(seconds: 1));
- return '["semua","hadir","ijin"]';
- }
- // Metode untuk mendapatkan JSON pilihan Choice Status.
- Future<String> loadChoiceStatus() async {
- // Simulasi pemanggilan data JSON dari sumber eksternal.
- await Future.delayed(Duration(seconds: 1));
- return '["semua","sudah","belum"]';
- }
- }
- class Peserta {
- final String nama;
- final String kehadiran;
- final String status;
- Peserta(this.nama, this.kehadiran, this.status);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement