Phantom1605

Materi ListView Channel Belajar Pemrogramman

Jan 7th, 2021 (edited)
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 3.74 KB | None | 0 0
  1. /* Model */
  2. class TreatmentModel {
  3.   final int id_treatment;
  4.   final String nama_treatment,
  5.       kode_treatment,
  6.       fokus_treatment,
  7.       gambar_treatment,
  8.       keterangan_treatment,
  9.       durasi_treatment;
  10.  
  11.   TreatmentModel({
  12.     this.id_treatment,
  13.     this.nama_treatment,
  14.     this.kode_treatment,
  15.     this.fokus_treatment,
  16.     this.gambar_treatment,
  17.     this.keterangan_treatment,
  18.     this.durasi_treatment,
  19.   });
  20.  
  21.   factory TreatmentModel.fromJson(Map<String, dynamic> json) {
  22.     return TreatmentModel(
  23.       id_treatment: json['id'] as int,
  24.       nama_treatment: json['treatment'] as String,
  25.       kode_treatment: json['kode'] as String,
  26.       fokus_treatment: json['fokus'] as String,
  27.       durasi_treatment: json['durasi'] as String,
  28.       gambar_treatment: json['image'] as String,
  29.       keterangan_treatment: json['keterangan'] as String,
  30.     );
  31.   }
  32. }
  33.  
  34.  
  35.  
  36. /* Main Page */
  37.  
  38. import 'dart:convert';
  39. import 'dart:async';
  40.  
  41. import 'package:flutter/material.dart';
  42. import 'package:flutter/services.dart';
  43. import 'package:http/http.dart' as http;
  44. import 'package:nakamura_data/Treatment_01/model.dart';
  45.  
  46. class TreatmentPage extends StatefulWidget {
  47.   @override
  48.   _TreatmentPageState createState() => _TreatmentPageState();
  49. }
  50.  
  51. class _TreatmentPageState extends State<TreatmentPage> {
  52.   List<TreatmentModel> listTreatment;
  53.  
  54.   @override
  55.   void initState() {
  56.     super.initState();
  57.   }
  58.  
  59.   Future<List<TreatmentModel>> _tampilkanDataTreatment() async {
  60.     try {
  61.       var jsonResponse = await http.get(
  62.           'http://mobiapp.nakamura.web.id/treatment/treatment/APITreatmentData');
  63.  
  64.       if (jsonResponse.statusCode == 200) {
  65.         final jsonItems =
  66.             json.decode(jsonResponse.body).cast<Map<String, dynamic>>();
  67.  
  68.         listTreatment = jsonItems.map<TreatmentModel>((json) {
  69.           return TreatmentModel.fromJson(json);
  70.         }).toList();
  71.       }
  72.     } catch (e) {}
  73.  
  74.     return listTreatment;
  75.   }
  76.  
  77.   Future<Null> _refreshTreatment() {
  78.     return _tampilkanDataTreatment().then((_listTreatment) {
  79.       setState(() {
  80.         return listTreatment = _listTreatment;
  81.       });
  82.     });
  83.   }
  84.  
  85.   @override
  86.   Widget build(BuildContext context) {
  87.     SystemChrome.setSystemUIOverlayStyle(
  88.       SystemUiOverlayStyle(
  89.         statusBarColor: Colors.transparent,
  90.       ),
  91.     );
  92.  
  93.     return Scaffold(
  94.       appBar: AppBar(
  95.         title: Text('Katalog Treatment'),
  96.       ),
  97.       body: RefreshIndicator(
  98.         onRefresh: _refreshTreatment,
  99.         child: FutureBuilder<List<TreatmentModel>>(
  100.           future: _tampilkanDataTreatment(),
  101.           builder: (context, snapshot) {
  102.             if (!snapshot.hasData)
  103.               return Center(
  104.                 child: CircularProgressIndicator(
  105.                   strokeWidth: 3.0,
  106.                 ),
  107.               );
  108.  
  109.             return Container(
  110.               child: ListView(
  111.                 padding: EdgeInsets.only(bottom: 160.0),
  112.                 children: snapshot.data.map((_data) {
  113.                   return Column(
  114.                     children: <Widget>[
  115.                       Card(
  116.                         child: Column(
  117.                           mainAxisSize: MainAxisSize.min,
  118.                           children: <Widget>[
  119.                             ListTile(
  120.                               leading: Icon(Icons.perm_media),
  121.                               title: Text(_data.nama_treatment),
  122.                               subtitle: Text(_data.fokus_treatment),
  123.                             ),
  124.                           ],
  125.                         ),
  126.                       ),
  127.                     ],
  128.                   );
  129.                 }).toList(),
  130.               ),
  131.             );
  132.           },
  133.         ),
  134.       ),
  135.     );
  136.   }
  137. }
  138.  
Add Comment
Please, Sign In to add comment