Facebook
From Paltry Terrapin, 3 Years ago, written in Dart.
This paste is a reply to Untitled from Soiled Crane - go back
Embed
Viewing differences between Untitled and Re: Untitled


import 'dart:convert';
import 'dart:ffi';
import 'package:flutter_money_formatter/flutter_money_formatter.
'package:kopralapp/master/filter_document.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:kopralapp/master/get_koperasi_data.dart';
import 'package:kopralapp/models/auth_model/user_auth.dart';
import 'package:kopralapp/models/pinjaman_model/pinjaman.dart';
import 'package:kopralapp/models/pinjaman_model/pinjaman_response.'package:kopralapp/provider/ajuan_model/ajuan_screen_view_model.dart';
import 'package:kopralapp/models/user_koperasi/koperasi.dart';
import 'package:kopralapp/screens/ajuan_screen/ajuan_screen.dart';
import 'package:kopralapp/screens/ajuan_screen/create_ajuan_screen/create_ajuan_screen.dart';
import 'package:kopralapp/utils/document_status.dart';
import 'package:kopralapp/utils/myDialog.dart';
import 'package:kopralapp/utils/string.'package:kopralapp/utils/widget_assets.dart';
import 'package:shared_preferences/shared_preferences.'package:provider/provider.dart';
import 'package:flutter/material.
dart';

class AjuanViewModel with ChangeNotifier AjuanScreen extends StatelessWidget {
  DocumentStatus _filter(ajuanModel, BuildContext context) {
    showModalBottomSheet(
        context: context,
        isScrollControlled: true,
        builder: (c) => FilterDocument(ajuanModel.documentStatus,(filterParam) {
          Navigator.pop(context);
          ajuanModel.PinjamanList.clear();
          ajuanModel.
documentStatus = DocumentStatus.TERLAKSANA;
  bool 
filterParam.documentStatus;
          ajuanModel.
isReq = true;
  bool isReqError = false;
  //ToDO: Create list pinjaman
  List PinjamanList = List();
  List PinjamanListAll = List();
  ScrollController controller;
  int dataToView = 4;
  int currentIndex = 0;
  String startDate = "Select Date";
  String endDate = "Select Date";
  String documentNo = "Document No";
  bool 
true;
          ajuanModel.
isFilter= false;
  Koperasi dataKoperasi;

  loadMore(){
    currentIndex = currentIndex + dataToView;
    if(currentIndex < PinjamanListAll.length){
      setListToDisplay(PinjamanListAll, currentIndex);
    }
    notifyListeners();
true;
          ajuanModel.getPinjamanList();
        })
    );
  }

  getPinjamanList() async _item(Pinjaman data, BuildContext context) {
    isReq = true;

    dataKoperasi = await getKoperasiToken();
    String url = BASE_URL + API_LIST_PENGAJUAN_PINJAMAN
        + "?kode_koperasi="+ dataKoperasi.kode_koperasi + "&no_anggota=" + dataKoperasi.no_anggota;
    if (isFilter){
      url = url + "?status_pengajuan="+StatusDocument(documentStatus).getName();
    }
    print(url);
    var response = await http.get(url,
      headers: {"Authorization":dataKoperasi.api_key == "" ? "your-api-key" : dataKoperasi.api_key}, )
        .catchError((error) {
          isReqError = true;
          return;
    });

    if (response.body != null) {
      isReq = false;
      print(response.body);
      if (response.statusCode == 200) {
        Iterable res = json.decode(response.body);
        print(res);
        PinjamanResponse PinjamanListResponse = PinjamanResponse.fromJsonMap(res);
        setDataList(PinjamanListResponse.ListPinjaman);

      }
    }else{
      this.PinjamanList = 
return Container(
      height: 215,
      decoration: 
new List();
    }

    notifyListeners();
BoxDecoration(
        boxShadow: [
          new BoxShadow(
            color: Colors.grey,
            blurRadius: 50.0,
          ),
        ],
      ),
      child: Card(
        shape:  RoundedRectangleBorder(
//          side: BorderSide(color: Colors.black, width: 1),
          borderRadius: BorderRadius.circular(25),
        ),
        child: Container(
          padding: EdgeInsets.all(10.0),
          child: Column(
            children: [
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        Text("Tanggal Ajuan",
                            style: TextStyle(fontFamily: "Title", fontSize: 15.0),
                            overflow: TextOverflow.ellipsis),
                        Text(data.status_pengajuan ?? "",
                            style: TextStyle(fontFamily: "Title", fontSize: 15.0, color: DocumentStatusColor().getColor(data.status_pengajuan)),
                            overflow: TextOverflow.ellipsis),
                      ],
                    ),
                  ),
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Text(
                      "19 mar 2019",
                      style: TextStyle(
                          fontFamily: "Subtitle",
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold),
                      textAlign: TextAlign.left,
                      overflow: TextOverflow.ellipsis,
                    ),
                  )
                ],
              ),
              Padding(padding: EdgeInsets.only(top: 10.0)),
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Text("Tanggal Cair",
                        style: TextStyle(fontFamily: "Title", fontSize: 15.0),
                        overflow: TextOverflow.ellipsis),
                  ),
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Text(
                      "19 mar 2020",
                      style: TextStyle(
                          fontFamily: "Subtitle",
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold),
                      textAlign: TextAlign.start,
                      overflow: TextOverflow.ellipsis,
                    ),
                  )
                ],
              ),
              Padding(padding: EdgeInsets.only(top: 10.0)),
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Text("Jenis",
                        style: TextStyle(fontFamily: "Title", fontSize: 15.0),
                        overflow: TextOverflow.ellipsis),
                  ),
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Text(
                      data.nama ?? "",
                      style: TextStyle(
                          fontFamily: "Subtitle",
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold),
                      textAlign: TextAlign.start,
                      overflow: TextOverflow.ellipsis,
                    ),
                  )
                ],
              ),
              Padding(padding: EdgeInsets.only(top: 10.0)),
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Text("Nominal",
                        style: TextStyle(fontFamily: "Title", fontSize: 15.0),
                        overflow: TextOverflow.ellipsis),
                  ),
                  Container(
                    width: MediaQuery.of(context).size.width,
                    child: Text(
                      data.total_pinjam_display,
                      style: TextStyle(
                          fontFamily: "Subtitle",
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold),
                      textAlign: TextAlign.start,
                      overflow: TextOverflow.ellipsis,
                    ),
                  )
                ],
              ),
              Padding(padding: EdgeInsets.only(top: 10.0)),
            ],
          ),
        ),
      ),
    );
  }

  setDataList(List data){
    data.forEach((element) {
      FlutterMoneyFormatter fmf = new FlutterMoneyFormatter(
          amount: double.parse(element.total_pinjaman.toString()),
          settings: MoneyFormatterSettings(
              symbol: 'Rp',
              thousandSeparator: '.',
              decimalSeparator: ',',
              symbolAndNumberSeparator: ' ',
              fractionDigits: 0,
              compactFormatType: CompactFormatType.short
          )
      );
      print(double.parse(element.total_pinjaman.toString()));
      print(fmf.output.symbolOnLeft);
      element.total_pinjam_display = fmf.output.symbolOnLeft;
    });

    this.PinjamanList.addAll(data);
    notifyListeners();
_loading(BuildContext context) {
    return Loading(context).show();
  }

  setListToDisplay(List data, int index){
    if(index+dataToView-1 < PinjamanListAll.length){
      
_noData() {
    return Container(
      child: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            ownText("No Document", fontSize: 17.0, color: Colors.grey),
            ownText("Tidak ada pengajuan",
                fontSize: 12.0, color: Colors.grey),
          ],
        ),
      ),
    );
  }



  _data(ajuanModel, BuildContext context) {
    return ListView.builder(
      physics: AlwaysScrollableScrollPhysics(),
      controller: ajuanModel.isFilter? null : ajuanModel.controller,
      itemBuilder: (c, i) => _item(ajuanModel.PinjamanList[i], context),
      itemCount: ajuanModel.
PinjamanList.addAll(data.sublist(index, index+dataToView-1));
    }
    notifyListeners();
  }

  setDefault() 
length,
    );
  }


  @override
  Widget build(BuildContext context) 
{
    return ChangeNotifierProvider(
      create: (context) => AjuanViewModel(),
      child: Consumer(
        builder: (context, ajuanModel, child){
          return Scaffold(
              appBar: AppBar(
                title: Text(
                  "Pengajuan Pinjaman",
                  style: TextStyle(fontFamily: "Title"),
                ),
                actions: [
                  IconButton(
                    onPressed: () {
                      Navigator.push(
                          context, MaterialPageRoute(
                          builder: (c) =>
                              AjuanAddScreen(
                                kodeKoperasi: ajuanModel.dataKoperasi
                                    .kode_koperasi,
                                NoMember: ajuanModel.dataKoperasi.no_member,
                                NoAnggota: ajuanModel.dataKoperasi.no_anggota,)
                      )
                      );
                    },
                    icon: Icon(Icons.add),
                  ),
                  IconButton(
                    onPressed: () => _filter(ajuanModel, context),
                    icon: Icon(Icons.filter_list),
                  )
                ],
              ),
              body: RefreshIndicator(
                child: Container(
                  margin: EdgeInsets.only(right: 8.0, left: 8.0, top: 10.0),
                  child: ajuanModel.isReq && ajuanModel.
PinjamanList.clear();
    getPinjamanList();
    notifyListeners();
  }

  _loadMore() {
    if (controller.offset >= controller.position.maxScrollExtent &&
        !controller.position.outOfRange) {
      loadMore();
    }
  }

  AjuanViewModel(){
    WidgetsBinding.instance.addPostFrameCallback((_) {
      this.getPinjamanList();
    });

  }

isEmpty ? _loading(context) : !ajuanModel.isReq && ajuanModel.PinjamanList.isEmpty ? _noData() : _data(ajuanModel, context),
                ),
                onRefresh: (){
                  _loading(context);
                  ajuanModel.setDefault();
                  print("iki melbu refresh");
                  return ajuanModel.isReq ? Future.value(null) :  null;
                },
              ));
        },
      ),
    );
  }
}