Facebook
From Paltry Terrapin, 3 Years ago, written in Dart.
This paste is a reply to Untitled from Soiled Crane - view diff
Embed
Download Paste or View Raw
Hits: 112
  1.  
  2.  
  3. import 'package:kopralapp/master/filter_document.dart';
  4. import 'package:kopralapp/models/pinjaman_model/pinjaman.dart';
  5. import 'package:kopralapp/provider/ajuan_model/ajuan_screen_view_model.dart';
  6. import 'package:kopralapp/screens/ajuan_screen/create_ajuan_screen/create_ajuan_screen.dart';
  7. import 'package:kopralapp/utils/document_status.dart';
  8. import 'package:kopralapp/utils/myDialog.dart';
  9. import 'package:kopralapp/utils/widget_assets.dart';
  10. import 'package:provider/provider.dart';
  11. import 'package:flutter/material.dart';
  12.  
  13. class AjuanScreen extends StatelessWidget {
  14.   _filter(ajuanModel, BuildContext context) {
  15.     showModalBottomSheet(
  16.         context: context,
  17.         isScrollControlled: true,
  18.         builder: (c) => FilterDocument(ajuanModel.documentStatus,(filterParam) {
  19.           Navigator.pop(context);
  20.           ajuanModel.PinjamanList.clear();
  21.           ajuanModel.documentStatus = filterParam.documentStatus;
  22.           ajuanModel.isReq = true;
  23.           ajuanModel.isFilter= true;
  24.           ajuanModel.getPinjamanList();
  25.         })
  26.     );
  27.   }
  28.  
  29.   _item(Pinjaman data, BuildContext context) {
  30.     return Container(
  31.       height: 215,
  32.       decoration: new BoxDecoration(
  33.         boxShadow: [
  34.           new BoxShadow(
  35.             color: Colors.grey,
  36.             blurRadius: 50.0,
  37.           ),
  38.         ],
  39.       ),
  40.       child: Card(
  41.         shape:  RoundedRectangleBorder(
  42. //          side: BorderSide(color: Colors.black, width: 1),
  43.           borderRadius: BorderRadius.circular(25),
  44.         ),
  45.         child: Container(
  46.           padding: EdgeInsets.all(10.0),
  47.           child: Column(
  48.             children: <Widget>[
  49.               Column(
  50.                 crossAxisAlignment: CrossAxisAlignment.start,
  51.                 children: <Widget>[
  52.                   Container(
  53.                     width: MediaQuery.of(context).size.width,
  54.                     child: Row(
  55.                       mainAxisAlignment: MainAxisAlignment.spaceBetween,
  56.                       children: <Widget>[
  57.                         Text("Tanggal Ajuan",
  58.                             style: TextStyle(fontFamily: "Title", fontSize: 15.0),
  59.                             overflow: TextOverflow.ellipsis),
  60.                         Text(data.status_pengajuan ?? "",
  61.                             style: TextStyle(fontFamily: "Title", fontSize: 15.0, color: DocumentStatusColor().getColor(data.status_pengajuan)),
  62.                             overflow: TextOverflow.ellipsis),
  63.                       ],
  64.                     ),
  65.                   ),
  66.                   Container(
  67.                     width: MediaQuery.of(context).size.width,
  68.                     child: Text(
  69.                       "19 mar 2019",
  70.                       style: TextStyle(
  71.                           fontFamily: "Subtitle",
  72.                           fontSize: 15.0,
  73.                           fontWeight: FontWeight.bold),
  74.                       textAlign: TextAlign.left,
  75.                       overflow: TextOverflow.ellipsis,
  76.                     ),
  77.                   )
  78.                 ],
  79.               ),
  80.               Padding(padding: EdgeInsets.only(top: 10.0)),
  81.               Column(
  82.                 crossAxisAlignment: CrossAxisAlignment.start,
  83.                 mainAxisAlignment: MainAxisAlignment.spaceBetween,
  84.                 children: <Widget>[
  85.                   Container(
  86.                     width: MediaQuery.of(context).size.width,
  87.                     child: Text("Tanggal Cair",
  88.                         style: TextStyle(fontFamily: "Title", fontSize: 15.0),
  89.                         overflow: TextOverflow.ellipsis),
  90.                   ),
  91.                   Container(
  92.                     width: MediaQuery.of(context).size.width,
  93.                     child: Text(
  94.                       "19 mar 2020",
  95.                       style: TextStyle(
  96.                           fontFamily: "Subtitle",
  97.                           fontSize: 15.0,
  98.                           fontWeight: FontWeight.bold),
  99.                       textAlign: TextAlign.start,
  100.                       overflow: TextOverflow.ellipsis,
  101.                     ),
  102.                   )
  103.                 ],
  104.               ),
  105.               Padding(padding: EdgeInsets.only(top: 10.0)),
  106.               Column(
  107.                 crossAxisAlignment: CrossAxisAlignment.start,
  108.                 mainAxisAlignment: MainAxisAlignment.spaceBetween,
  109.                 children: <Widget>[
  110.                   Container(
  111.                     width: MediaQuery.of(context).size.width,
  112.                     child: Text("Jenis",
  113.                         style: TextStyle(fontFamily: "Title", fontSize: 15.0),
  114.                         overflow: TextOverflow.ellipsis),
  115.                   ),
  116.                   Container(
  117.                     width: MediaQuery.of(context).size.width,
  118.                     child: Text(
  119.                       data.nama ?? "",
  120.                       style: TextStyle(
  121.                           fontFamily: "Subtitle",
  122.                           fontSize: 15.0,
  123.                           fontWeight: FontWeight.bold),
  124.                       textAlign: TextAlign.start,
  125.                       overflow: TextOverflow.ellipsis,
  126.                     ),
  127.                   )
  128.                 ],
  129.               ),
  130.               Padding(padding: EdgeInsets.only(top: 10.0)),
  131.               Column(
  132.                 crossAxisAlignment: CrossAxisAlignment.start,
  133.                 mainAxisAlignment: MainAxisAlignment.spaceBetween,
  134.                 children: <Widget>[
  135.                   Container(
  136.                     width: MediaQuery.of(context).size.width,
  137.                     child: Text("Nominal",
  138.                         style: TextStyle(fontFamily: "Title", fontSize: 15.0),
  139.                         overflow: TextOverflow.ellipsis),
  140.                   ),
  141.                   Container(
  142.                     width: MediaQuery.of(context).size.width,
  143.                     child: Text(
  144.                       data.total_pinjam_display,
  145.                       style: TextStyle(
  146.                           fontFamily: "Subtitle",
  147.                           fontSize: 15.0,
  148.                           fontWeight: FontWeight.bold),
  149.                       textAlign: TextAlign.start,
  150.                       overflow: TextOverflow.ellipsis,
  151.                     ),
  152.                   )
  153.                 ],
  154.               ),
  155.               Padding(padding: EdgeInsets.only(top: 10.0)),
  156.             ],
  157.           ),
  158.         ),
  159.       ),
  160.     );
  161.   }
  162.  
  163.   _loading(BuildContext context) {
  164.     return Loading(context).show();
  165.   }
  166.  
  167.   _noData() {
  168.     return Container(
  169.       child: Center(
  170.         child: Column(
  171.           mainAxisSize: MainAxisSize.min,
  172.           children: <Widget>[
  173.             ownText("No Document", fontSize: 17.0, color: Colors.grey),
  174.             ownText("Tidak ada pengajuan",
  175.                 fontSize: 12.0, color: Colors.grey),
  176.           ],
  177.         ),
  178.       ),
  179.     );
  180.   }
  181.  
  182.  
  183.  
  184.   _data(ajuanModel, BuildContext context) {
  185.     return ListView.builder(
  186.       physics: AlwaysScrollableScrollPhysics(),
  187.       controller: ajuanModel.isFilter? null : ajuanModel.controller,
  188.       itemBuilder: (c, i) => _item(ajuanModel.PinjamanList[i], context),
  189.       itemCount: ajuanModel.PinjamanList.length,
  190.     );
  191.   }
  192.  
  193.  
  194.   @override
  195.   Widget build(BuildContext context) {
  196.     return ChangeNotifierProvider<AjuanViewModel>(
  197.       create: (context) => AjuanViewModel(),
  198.       child: Consumer<AjuanViewModel>(
  199.         builder: (context, ajuanModel, child){
  200.           return Scaffold(
  201.               appBar: AppBar(
  202.                 title: Text(
  203.                   "Pengajuan Pinjaman",
  204.                   style: TextStyle(fontFamily: "Title"),
  205.                 ),
  206.                 actions: <Widget>[
  207.                   IconButton(
  208.                     onPressed: () {
  209.                       Navigator.push(
  210.                           context, MaterialPageRoute(
  211.                           builder: (c) =>
  212.                               AjuanAddScreen(
  213.                                 kodeKoperasi: ajuanModel.dataKoperasi
  214.                                     .kode_koperasi,
  215.                                 NoMember: ajuanModel.dataKoperasi.no_member,
  216.                                 NoAnggota: ajuanModel.dataKoperasi.no_anggota,)
  217.                       )
  218.                       );
  219.                     },
  220.                     icon: Icon(Icons.add),
  221.                   ),
  222.                   IconButton(
  223.                     onPressed: () => _filter(ajuanModel, context),
  224.                     icon: Icon(Icons.filter_list),
  225.                   )
  226.                 ],
  227.               ),
  228.               body: RefreshIndicator(
  229.                 child: Container(
  230.                   margin: EdgeInsets.only(right: 8.0, left: 8.0, top: 10.0),
  231.                   child: ajuanModel.isReq && ajuanModel.PinjamanList.isEmpty ? _loading(context) : !ajuanModel.isReq && ajuanModel.PinjamanList.isEmpty ? _noData() : _data(ajuanModel, context),
  232.                 ),
  233.                 onRefresh: (){
  234.                   _loading(context);
  235.                   ajuanModel.setDefault();
  236.                   print("iki melbu refresh");
  237.                   return ajuanModel.isReq ? Future.value(null) :  null;
  238.                 },
  239.               ));
  240.         },
  241.       ),
  242.     );
  243.   }
  244. }