alvinvin00

missing_page.dart

Mar 18th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 7.21 KB | None | 0 0
  1. import 'dart:async';
  2.  
  3. import 'package:bencana/missing_add.dart';
  4. import 'package:firebase_database/firebase_database.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:bencana/missing.dart';
  7. import 'package:bencana/utilities.dart';
  8.  
  9.  
  10. class MissingPage extends StatefulWidget {
  11.   final disasterId;
  12.   final disasterName;
  13.  
  14.   const MissingPage({Key key, this.disasterId, this.disasterName}) : super(key: key);
  15.   @override
  16.   _MissingPageState createState() => _MissingPageState(disasterId, disasterName);
  17. }
  18.  
  19.  
  20. class _MissingPageState extends State<MissingPage> {
  21.   final disasterId;
  22.   final disasterName;
  23.  
  24.   var nama;
  25.   var lokasi;
  26.   var status;
  27.   var umur;
  28.   var deskripsi;
  29.   var jenisKelamin;
  30.   var missing;
  31.   var timestamp;
  32.  
  33.  
  34.   List<MissingModel> missingList = new List();
  35.   Utilities util = new Utilities();
  36.  
  37.   // 3. Buat StreamSubscription untuk mendeteksi perubahan database
  38.   //    Ini perlu import dart:async
  39.   StreamSubscription<Event> _onMissingAddedSubscription;
  40.   StreamSubscription<Event> _onMissingChangedSubscription;
  41.  
  42.   _MissingPageState(this.disasterId, this.disasterName);
  43.  
  44.   void _onMissingAdded(Event event) {
  45.     print('On missing added...');
  46.     missing = new MissingModel.fromSnapshot(event.snapshot);
  47.     nama = missing.nama;
  48.     lokasi = missing.lokasi;
  49.     jenisKelamin = missing.jenisKelamin;
  50.     umur = missing.umur;
  51.     deskripsi = missing.deskripsi;
  52.     status = missing.status;
  53.     print('Missing Length: $missingList.length');
  54.     print("Nama: $nama, Lokasi: $lokasi, Jenis Kelamin: $jenisKelamin, Umur: $umur, Deskripsi: $deskripsi, Status: $status");
  55.     setState(() {
  56.       missingList.add(missing);
  57.     });
  58.   }
  59.  
  60.   void _onMissingChanged(Event event) {
  61.     print('On missing changed...');
  62.     missing = new MissingModel.fromSnapshot(event.snapshot);
  63.     setState(() {
  64.       missingList.clear();
  65.       nama = missing.nama;
  66.       lokasi = missing.lokasi;
  67.       status = missing.status;
  68.       jenisKelamin = missing.jenisKelamin;
  69.       umur = missing.umur;
  70.       deskripsi = missing.deskripsi;
  71.       print('Missing Length: $missingList.length');
  72.       print("Nama: $nama, Lokasi: $lokasi, Jenis Kelamin: $jenisKelamin, Umur: $umur, Deskrips: $deskripsi, Status: $status");
  73.       missingList.add(missing);
  74.     });
  75.   }
  76.  
  77.  
  78.   @override
  79.   void initState() {
  80.     super.initState();
  81.     final missingRef = FirebaseDatabase.instance.reference().child('missing').child(disasterId);
  82.     missingList.clear();
  83.     _onMissingAddedSubscription =
  84.         missingRef.onChildAdded.listen(_onMissingAdded);
  85.     _onMissingChangedSubscription =
  86.         missingRef.onChildChanged.listen(_onMissingChanged);
  87.   }
  88.  
  89.   @override
  90.   void dispose() {
  91.     super.dispose();
  92.     _onMissingAddedSubscription.cancel();
  93.     _onMissingChangedSubscription.cancel();
  94.   }
  95.  
  96.  
  97.   @override
  98.   Widget build(BuildContext context) {
  99.  
  100.     return Scaffold(
  101.       appBar: AppBar(title: Text(disasterName),
  102.         actions: <Widget>[
  103.           IconButton(icon: Icon(Icons.add),
  104.             onPressed: (){
  105.               Navigator.push(context, MaterialPageRoute(builder: (context) => MissingAdd(disasterId: disasterId,)));
  106.             },)
  107.         ],),
  108.       body: Container(
  109.         child: Container(
  110.           color: Colors.grey[300],
  111.           child: missingList.length == 0
  112.               ? const Center(child: CircularProgressIndicator())
  113.               : ListView.builder(
  114.             itemBuilder: (BuildContext context, int index) {
  115.               return Card(
  116.                 child: Column(
  117.                   crossAxisAlignment: CrossAxisAlignment.start,
  118.                   children: <Widget>[
  119.                     Padding(
  120.                       padding: const EdgeInsets.only(
  121.                         left: 16.0,
  122.                         right: 16.0,
  123.                         bottom: 10.0,
  124.                         top: 10.0,
  125.                       ),
  126.  
  127.                       child: Row(
  128.                         children: <Widget>[
  129.                           Text(
  130.                             missingList[index].nama,
  131.                             style: TextStyle(
  132.                               fontWeight:FontWeight.bold,
  133.                               fontSize: 18.0,
  134.                             ),
  135.                           ),
  136.  
  137.                         ],
  138.                       ),
  139.                     ),
  140.                     Padding(
  141.                       padding: const EdgeInsets.only(
  142.                         left: 16.0,
  143.                         right: 16.0,
  144.                         bottom: 10.0,
  145.                       ),
  146.                       child: Text(
  147.                         'Lokasi : ${missingList[index].lokasi}',
  148.                         style: TextStyle(
  149.                           fontSize: 14.0,
  150.                           color: Colors.grey,
  151.                         ),
  152.                       ),
  153.                     ),
  154.  
  155.                     Padding(
  156.                       padding: const EdgeInsets.only(
  157.                         left: 16.0,
  158.                         right: 16.0,
  159.                         bottom: 10.0,
  160.                       ),
  161.                       child: Text(
  162.                         'Jenis Kelamin : ${missingList[index].jenisKelamin}',
  163.                         style: TextStyle(
  164.                           fontSize: 14.0,
  165.                           color: Colors.grey,
  166.                         ),
  167.                       ),
  168.                     ),
  169.  
  170.  
  171.                     Padding(
  172.                       padding: const EdgeInsets.only(
  173.                         left: 16.0,
  174.                         right: 16.0,
  175.                         bottom: 10.0,
  176.                       ),
  177.                       child: Text(
  178.                         'Umur : ${missingList[index].umur}',
  179.                         style: TextStyle(
  180.                           fontSize: 14.0,
  181.                           color: Colors.grey,
  182.                         ),
  183.                       ),
  184.                     ),
  185.  
  186.                     Padding(
  187.                       padding: const EdgeInsets.only(
  188.                         left: 16.0,
  189.                         right: 16.0,
  190.                         bottom: 10.0,
  191.                       ),
  192.  
  193.                       child: Text(
  194.                         'Status : ${missingList[index].status}',
  195.                         style: TextStyle(
  196.                           fontSize: 14.0,
  197.                           color: Colors.grey,
  198.                         ),
  199.                       ),
  200.                     ),
  201.  
  202.  
  203.                     Padding(
  204.                       padding: const EdgeInsets.only(
  205.                         left: 16.0,
  206.                         right: 16.0,
  207.                         bottom: 10.0,
  208.                       ),
  209.                       child: Text(
  210.                         'Deskripsi : ${missingList[index].deskripsi}',
  211.                         style: TextStyle(
  212.                           fontSize: 14.0,
  213.                           color: Colors.grey,
  214.                         ),
  215.                       ),
  216.                     ),
  217.                     SizedBox(height: 8.0,),
  218.                   ],
  219.                 ),
  220.               );
  221.             },
  222.             itemCount: missingList == null ? 0 : missingList.length,
  223.           ),
  224.         ),
  225.       ),
  226.     );
  227.   }
  228. }
Add Comment
Please, Sign In to add comment