Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'package:bencana/missing_add.dart';
- import 'package:firebase_database/firebase_database.dart';
- import 'package:flutter/material.dart';
- import 'package:bencana/missing.dart';
- import 'package:bencana/utilities.dart';
- class MissingPage extends StatefulWidget {
- final disasterId;
- final disasterName;
- const MissingPage({Key key, this.disasterId, this.disasterName}) : super(key: key);
- @override
- _MissingPageState createState() => _MissingPageState(disasterId, disasterName);
- }
- class _MissingPageState extends State<MissingPage> {
- final disasterId;
- final disasterName;
- var nama;
- var lokasi;
- var status;
- var umur;
- var deskripsi;
- var jenisKelamin;
- var missing;
- var timestamp;
- List<MissingModel> missingList = new List();
- Utilities util = new Utilities();
- // 3. Buat StreamSubscription untuk mendeteksi perubahan database
- // Ini perlu import dart:async
- StreamSubscription<Event> _onMissingAddedSubscription;
- StreamSubscription<Event> _onMissingChangedSubscription;
- _MissingPageState(this.disasterId, this.disasterName);
- void _onMissingAdded(Event event) {
- print('On missing added...');
- missing = new MissingModel.fromSnapshot(event.snapshot);
- nama = missing.nama;
- lokasi = missing.lokasi;
- jenisKelamin = missing.jenisKelamin;
- umur = missing.umur;
- deskripsi = missing.deskripsi;
- status = missing.status;
- print('Missing Length: $missingList.length');
- print("Nama: $nama, Lokasi: $lokasi, Jenis Kelamin: $jenisKelamin, Umur: $umur, Deskripsi: $deskripsi, Status: $status");
- setState(() {
- missingList.add(missing);
- });
- }
- void _onMissingChanged(Event event) {
- print('On missing changed...');
- missing = new MissingModel.fromSnapshot(event.snapshot);
- setState(() {
- missingList.clear();
- nama = missing.nama;
- lokasi = missing.lokasi;
- status = missing.status;
- jenisKelamin = missing.jenisKelamin;
- umur = missing.umur;
- deskripsi = missing.deskripsi;
- print('Missing Length: $missingList.length');
- print("Nama: $nama, Lokasi: $lokasi, Jenis Kelamin: $jenisKelamin, Umur: $umur, Deskrips: $deskripsi, Status: $status");
- missingList.add(missing);
- });
- }
- @override
- void initState() {
- super.initState();
- final missingRef = FirebaseDatabase.instance.reference().child('missing').child(disasterId);
- missingList.clear();
- _onMissingAddedSubscription =
- missingRef.onChildAdded.listen(_onMissingAdded);
- _onMissingChangedSubscription =
- missingRef.onChildChanged.listen(_onMissingChanged);
- }
- @override
- void dispose() {
- super.dispose();
- _onMissingAddedSubscription.cancel();
- _onMissingChangedSubscription.cancel();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(title: Text(disasterName),
- actions: <Widget>[
- IconButton(icon: Icon(Icons.add),
- onPressed: (){
- Navigator.push(context, MaterialPageRoute(builder: (context) => MissingAdd(disasterId: disasterId,)));
- },)
- ],),
- body: Container(
- child: Container(
- color: Colors.grey[300],
- child: missingList.length == 0
- ? const Center(child: CircularProgressIndicator())
- : ListView.builder(
- itemBuilder: (BuildContext context, int index) {
- return Card(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- Padding(
- padding: const EdgeInsets.only(
- left: 16.0,
- right: 16.0,
- bottom: 10.0,
- top: 10.0,
- ),
- child: Row(
- children: <Widget>[
- Text(
- missingList[index].nama,
- style: TextStyle(
- fontWeight:FontWeight.bold,
- fontSize: 18.0,
- ),
- ),
- ],
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(
- left: 16.0,
- right: 16.0,
- bottom: 10.0,
- ),
- child: Text(
- 'Lokasi : ${missingList[index].lokasi}',
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.grey,
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(
- left: 16.0,
- right: 16.0,
- bottom: 10.0,
- ),
- child: Text(
- 'Jenis Kelamin : ${missingList[index].jenisKelamin}',
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.grey,
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(
- left: 16.0,
- right: 16.0,
- bottom: 10.0,
- ),
- child: Text(
- 'Umur : ${missingList[index].umur}',
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.grey,
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(
- left: 16.0,
- right: 16.0,
- bottom: 10.0,
- ),
- child: Text(
- 'Status : ${missingList[index].status}',
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.grey,
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(
- left: 16.0,
- right: 16.0,
- bottom: 10.0,
- ),
- child: Text(
- 'Deskripsi : ${missingList[index].deskripsi}',
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.grey,
- ),
- ),
- ),
- SizedBox(height: 8.0,),
- ],
- ),
- );
- },
- itemCount: missingList == null ? 0 : missingList.length,
- ),
- ),
- ),
- );
- }
- }
Add Comment
Please, Sign In to add comment