import 'dart:convert'; import 'dart:ffi'; import 'package:flutter_money_formatter/flutter_money_formatter.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.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.dart'; import 'package:shared_preferences/shared_preferences.dart'; class AjuanViewModel with ChangeNotifier { DocumentStatus documentStatus = DocumentStatus.TERLAKSANA; bool 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 isFilter= false; Koperasi dataKoperasi; loadMore(){ currentIndex = currentIndex + dataToView; if(currentIndex < PinjamanListAll.length){ setListToDisplay(PinjamanListAll, currentIndex); } notifyListeners(); } getPinjamanList() async { 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 = new List(); } notifyListeners(); } 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(); } setListToDisplay(List data, int index){ if(index+dataToView-1 < PinjamanListAll.length){ PinjamanList.addAll(data.sublist(index, index+dataToView-1)); } notifyListeners(); } setDefault() { PinjamanList.clear(); getPinjamanList(); notifyListeners(); } _loadMore() { if (controller.offset >= controller.position.maxScrollExtent && !controller.position.outOfRange) { loadMore(); } } AjuanViewModel(){ WidgetsBinding.instance.addPostFrameCallback((_) { this.getPinjamanList(); }); } }