Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.89 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import 'package:sertifikasi_project/services/SertifikasiProvider.dart';
  4. import 'package:sertifikasi_project/widgets/LoadingAnimation.dart';
  5.  
  6. void main() => runApp(MyApp());
  7.  
  8. class MyApp extends StatelessWidget {
  9.   // This widget is the root of your application.
  10.   @override
  11.   Widget build(BuildContext context) {
  12.     return MaterialApp(
  13.       title: 'Flutter Demo',
  14.       theme: ThemeData(
  15.         primarySwatch: Colors.blue,
  16.       ),
  17.       home : Scaffold(
  18.         appBar : AppBar(
  19.           title : Text("Sertifikasi List"),
  20.           backgroundColor : Colors.blue
  21.         ),
  22.         body : MultiProvider(
  23.           providers: [
  24.             ChangeNotifierProvider(
  25.               builder : (context) => SertifikasiProvider()
  26.             )
  27.           ],
  28.           child : MyHomePage(title : 'Hello')
  29.         )
  30.       )
  31.     );
  32.   }
  33. }
  34.  
  35. class MyHomePage extends StatefulWidget {
  36.   MyHomePage({Key key, this.title}) : super(key: key);
  37.  
  38.   final String title;
  39.  
  40.   @override
  41.   _MyHomePageState createState() => _MyHomePageState();
  42. }
  43.  
  44. class _MyHomePageState extends State<MyHomePage> {
  45.   ScrollController scrollController;
  46.   final GlobalKey<RefreshIndicatorState> _refreshIndicatorState = new GlobalKey<RefreshIndicatorState>();
  47.   _scrollListener(){
  48.     if(scrollController.offset >= scrollController.position.maxScrollExtent &&
  49.       !scrollController.position.outOfRange){
  50.         final providers = Provider.of<SertifikasiProvider>(context);
  51.         if(providers.getFetching == false){
  52.           providers.setFetching(true);
  53.           providers.getSertifikasiList();
  54.         }
  55.       }
  56.   }
  57.   @override
  58.   void initState(){
  59.     scrollController = new ScrollController();
  60.     scrollController.addListener(_scrollListener);
  61.     WidgetsBinding.instance
  62.       .addPostFrameCallback((_) => _refreshIndicatorState.currentState.show());
  63.     super.initState();
  64.   }
  65.   @override
  66.   Widget build(BuildContext context){
  67.     final sertifikasiProvider = Provider.of<SertifikasiProvider>(context);
  68.     if(sertifikasiProvider.getSertifikasiAsesiList == null){
  69.       sertifikasiProvider.getSertifikasiList();
  70.       print("LENGTH : " + sertifikasiProvider.getSertifikasiAsesiList.length.toString());
  71.     }
  72.     return RefreshIndicator(
  73.       key : _refreshIndicatorState,
  74.       onRefresh : refreshSertifikasiList(),
  75.       child : SingleChildScrollView(
  76.         controller : scrollController,
  77.         child : Container(
  78.             padding : EdgeInsets.all(16),
  79.             child : Column(
  80.               crossAxisAlignment: CrossAxisAlignment.start,
  81.               children: <Widget>[
  82.                 Text("Sertifikasi Asesi List"),
  83.                 SizedBox(height : 30),
  84.                 sertifikasiProvider.getSertifikasiAsesiList.length > 0 ?
  85.                   SertifikasiListView() : Center(child : LoadingAnimation()),
  86.               ],
  87.             )
  88.           )
  89.         )
  90.     );
  91.   }
  92.   refreshSertifikasiList() {
  93.     final providers = Provider.of<SertifikasiProvider>(context);
  94.     if(providers.getSertifikasiAsesiList.length > 0){
  95.       providers.getSertifikasiAsesiList.clear();
  96.       providers.setFetching(true);
  97.       providers.getSertifikasiList();
  98.     }
  99.   }
  100. }
  101.  
  102. class SertifikasiListView extends StatelessWidget {
  103.   @override
  104.   Widget build(BuildContext context){
  105.     return Consumer<SertifikasiProvider>(
  106.       builder : (context , providers , child){
  107.         return Column(
  108.           children: <Widget>[
  109.             Container(
  110.               child: ListView.builder(
  111.                 itemCount : providers.getSertifikasiAsesiList.length,
  112.                 shrinkWrap : true,
  113.                 physics: NeverScrollableScrollPhysics(),
  114.                 itemBuilder : ( context , position ){
  115.                   var data = providers.getSertifikasiAsesiList[position];
  116.                   return Card(
  117.                     elevation : 1,
  118.                     child : Container(
  119.                       padding : const EdgeInsets.all(16),
  120.                       child : Column(
  121.                         crossAxisAlignment: CrossAxisAlignment.start,
  122.                         children: <Widget>[
  123.                           Text("Nama Lengkap : " + data.nama_lengkap ,
  124.                           style : TextStyle(color : Colors.green , fontSize : 17 ,
  125.                           fontWeight : FontWeight.bold)),
  126.                           SizedBox(height : 10.0),
  127.                           Text("Tempat Lahir : " + data.tempat_lahir ,
  128.                           style : TextStyle(fontSize : 16 , color : Colors.black))
  129.                         ],
  130.                       )
  131.                     )
  132.                   );
  133.                 }
  134.               ),
  135.             ),
  136.             providers.getFetching == true ? Center(
  137.               child : CircularProgressIndicator() ,
  138.             ) : Container()
  139.           ],
  140.         );
  141.       }
  142.     );
  143.   }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement