Advertisement
Guest User

Untitled

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