Created
May 12, 2022 03:12
-
-
Save fleetimee/e10de7de647ccf22addee27820d279dd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:convert'; | |
import 'package:http/http.dart' as http; | |
import 'package:shared_preferences/shared_preferences.dart'; | |
class Network { | |
final String _url = 'http://192.168.100.207:8080/api/'; | |
// 192.168.1.2 is my IP, change with your IP address | |
var token; | |
_getToken() async { | |
SharedPreferences localStorage = await SharedPreferences.getInstance(); | |
token = jsonDecode(localStorage.getString('token')); | |
} | |
auth(data, apiURL) async { | |
var fullUrl = _url + apiURL; | |
return await http.post(fullUrl, | |
body: jsonEncode(data), headers: _setHeaders()); | |
} | |
getData(apiURL) async { | |
var fullUrl = _url + apiURL; | |
await _getToken(); | |
return await http.get( | |
fullUrl, | |
headers: _setHeaders(), | |
); | |
} | |
deleteData(apiURL, id) async { | |
var fullUrl = _url + apiURL + '/' + id.toString(); | |
await _getToken(); | |
return await http.delete( | |
fullUrl, | |
headers: _setHeaders(), | |
); | |
} | |
_setHeaders() => { | |
'Content-type': 'application/json', | |
'Accept': 'application/json', | |
'Authorization': 'Bearer $token', | |
}; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ignore_for_file: deprecated_member_use | |
import 'package:flutter/material.dart'; | |
import 'package:flutter_auth/Models/nasabah.dart'; | |
import 'package:flutter_auth/network/nasabah_service.dart'; | |
import 'package:flutter_auth/screens/Menu/DataNasabah/detailnasabah.dart'; | |
import 'package:shared_preferences/shared_preferences.dart'; | |
import 'dart:convert'; | |
class DataNasabah extends StatefulWidget { | |
@override | |
_DataNasabahState createState() => _DataNasabahState(); | |
} | |
class _DataNasabahState extends State<DataNasabah> { | |
String nama_debitur = ''; | |
List<Nasabah> _nasabah = []; | |
@override | |
void initState() { | |
super.initState(); | |
_loadUserData(); | |
_getNasabah(); | |
} | |
_loadUserData() async { | |
SharedPreferences localStorage = await SharedPreferences.getInstance(); | |
var user = jsonDecode(localStorage.getString('user')); | |
if (user != null) { | |
setState(() { | |
nama_debitur = user['nama_debitur']; | |
}); | |
} | |
} | |
_getNasabah() { | |
NasabahService.getUser().then((nasabah) { | |
if (mounted) { | |
setState(() { | |
_nasabah = nasabah; | |
}); | |
} | |
}); | |
} | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
backgroundColor: Colors.white, | |
appBar: AppBar( | |
title: Text('Data Nasabah'), | |
// backgroundColor: Color(0xff151515), | |
// automaticallyImplyLeading: false, | |
), | |
body: SingleChildScrollView( | |
child: PaginatedDataTable( | |
rowsPerPage: 10, | |
header: Align( | |
alignment: Alignment.center, | |
child: Text( | |
'Data Nasabah', | |
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), | |
), | |
), | |
// Text("Data Nasabah"), | |
columns: [ | |
DataColumn( | |
label: Expanded( | |
child: Text( | |
'ID Nasabah', | |
textAlign: TextAlign.center, | |
)), | |
), | |
DataColumn( | |
label: Expanded( | |
child: Text( | |
'Nama Nasabah', | |
textAlign: TextAlign.center, | |
)), | |
), | |
DataColumn( | |
label: Expanded( | |
child: Text( | |
'Aksi', | |
textAlign: TextAlign.center, | |
)), | |
), | |
], | |
source: NasabahDataTableSource(userData: _nasabah, context: context), | |
), | |
), | |
); | |
} | |
} | |
class NasabahDataTableSource extends DataTableSource { | |
BuildContext context; | |
NasabahDataTableSource({this.context, this.userData}); | |
final List<Nasabah> userData; | |
@override | |
DataRow getRow(int index) { | |
return DataRow.byIndex( | |
index: index, | |
cells: [ | |
DataCell(Align( | |
alignment: Alignment.center, | |
child: Text( | |
"${userData[index].id}", | |
))), | |
DataCell(Align( | |
alignment: Alignment.center, | |
child: Text("${userData[index].nama_debitur}"), | |
)), | |
DataCell( | |
Row( | |
mainAxisAlignment: MainAxisAlignment.spaceBetween, | |
children: [ | |
IconButton( | |
icon: Icon(Icons.navigate_next), | |
color: Colors.blueAccent, | |
onPressed: () { | |
Navigator.push( | |
context, | |
MaterialPageRoute( | |
builder: (context) => DetailNasabah( | |
nasabah: userData[index], | |
), | |
), | |
); | |
}, | |
), | |
IconButton( | |
icon: Icon(Icons.delete), | |
color: Colors.red, | |
onPressed: () { | |
showDialog( | |
context: context, | |
builder: (context) => AlertDialog( | |
title: Text('Hapus Data Nasabah'), | |
content: Text( | |
'Apakah anda yakin ingin menghapus data nasabah ini?'), | |
actions: [ | |
FlatButton(child: Text('Yes'), onPressed: () { | |
NasabahService.deleteUser(userData[index].id); | |
}) | |
], | |
), | |
); | |
}, | |
) | |
], | |
), | |
), | |
// DataCell( | |
// FlatButton( | |
// child: Icon( | |
// Icons.chevron_right, | |
// color: Colors.red, | |
// ), | |
// onPressed: () { | |
// Navigator.push( | |
// context, | |
// MaterialPageRoute( | |
// builder: (context) => DetailNasabah( | |
// nasabah: userData[index], | |
// ), | |
// ), | |
// ); | |
// }, | |
// ), | |
// ), | |
], | |
); | |
} | |
@override | |
bool get isRowCountApproximate => false; | |
@override | |
int get rowCount => userData.length; | |
@override | |
int get selectedRowCount => 0; | |
void sort<T>(Comparable<T> getField(Nasabah d), bool ascending) { | |
userData.sort((Nasabah a, Nasabah b) { | |
if (!ascending) { | |
final Nasabah c = a; | |
a = b; | |
b = c; | |
} | |
final Comparable<T> aValue = getField(a); | |
final Comparable<T> bValue = getField(b); | |
return Comparable.compare(aValue, bValue); | |
}); | |
notifyListeners(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter_auth/Models/nasabah.dart'; | |
import 'api.dart'; | |
import 'dart:convert'; | |
class NasabahService { | |
static String baseUrl = "mstdebitur"; | |
static Future<List<Nasabah>> getUser() async { | |
final response = await Network().getData(baseUrl); | |
List<Nasabah> list = parseResponse(response.body); | |
return list; | |
} | |
static Future<List<Nasabah>> deleteUser(id) async { | |
final response = await Network().deleteData(baseUrl, id); | |
List<Nasabah> list = parseResponse(response.body); | |
return list; | |
} | |
static List<Nasabah> parseResponse(String responseBody) { | |
final parsed = json.decode(responseBody).cast<Map<String, dynamic>>(); | |
return parsed.map<Nasabah>((json) => Nasabah.fromJson(json)).toList(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment