Advertisement
wildanfuady

Untitled

Nov 13th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'package:http/http.dart' as http;
  3. import 'package:flutter/services.dart';
  4. import 'dart:convert';
  5. import 'dart:async';
  6.  
  7. import 'package:sekolahku/project/FormAddSiswa.dart';
  8. import 'package:sekolahku/project/ViewSiswa.dart';
  9.  
  10. class ListSiswa extends StatefulWidget {
  11.  
  12.  
  13. @override
  14. _ListSiswaState createState() => _ListSiswaState();
  15.  
  16. }
  17.  
  18. class _ListSiswaState extends State<ListSiswa> {
  19.  
  20. var refreshKey = GlobalKey<RefreshIndicatorState>();
  21.  
  22. @override
  23. void initState() {
  24. super.initState();
  25. getData();
  26. }
  27.  
  28. // mengambil da ta dari database
  29. Future<List> getData() async {
  30. // refresh
  31. refreshKey.currentState?.show(atTop: false);
  32. await Future.delayed(Duration(seconds: 1));
  33. // data
  34. final response = await http.get("http://10.0.2.2/flutter-sekolahku-server/siswa/getsiswa.php");
  35. return json.decode(response.body);
  36.  
  37. }
  38.  
  39. Widget build(BuildContext context){
  40.  
  41. return Scaffold(
  42. appBar: AppBar(
  43. title: Text("List Siswa"),
  44. leading: Icon(Icons.school),
  45. ),
  46. body: RefreshIndicator(
  47. key: refreshKey,
  48. child: FutureBuilder<List>(
  49. future: getData(),
  50. builder: (context, snapshot){
  51. // cek apakah ada error atau tidak
  52. if(snapshot.hasError) print(snapshot.error);
  53. // jika tidak terjadi error dan ada data
  54. return snapshot.hasData
  55. ? new ItemList(
  56. list: snapshot.data,
  57. )
  58. : Center(
  59. child: CircularProgressIndicator(),
  60. );
  61. },
  62. ),
  63. onRefresh: getData,
  64. ),
  65. floatingActionButton: FloatingActionButton(
  66. child: Icon(Icons.add),
  67. onPressed: () => Navigator.of(context).push(
  68. MaterialPageRoute(
  69. builder: (BuildContext context) => AddSiswa(),
  70. )
  71. ),
  72. ),
  73. );
  74. }
  75. }
  76.  
  77. class ItemList extends StatelessWidget{
  78. final List list;
  79. ItemList({this.list});
  80. @override
  81. Widget build(BuildContext context){
  82. return new ListView.builder(
  83. itemCount: list == null ? 0 : list.length,
  84. itemBuilder: (context, i){
  85. return new Container (
  86. padding: const EdgeInsets.all(5.0),
  87. child: new GestureDetector(
  88. // ke halaman detail jika di klik
  89. onTap: () => Navigator.of(context).pushReplacement(
  90. new MaterialPageRoute(
  91. builder: (BuildContext context) => ViewSiswa(list:list, index: i)
  92. ),
  93. ),
  94. child: Card(
  95. child: new ListTile(
  96. title: Text(list[i]['nama']),
  97. leading: Icon(Icons.person),
  98. subtitle: Text("Usia : ${list[i]['usia']} tahun"),
  99. )
  100. ),
  101. ),
  102. );
  103. },
  104. );
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement