Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- import 'package:sertifikasi_project/services/SertifikasiProvider.dart';
- import 'package:sertifikasi_project/widgets/LoadingAnimation.dart';
- void main() => runApp(MyApp());
- class MyApp extends StatelessWidget {
- // This widget is the root of your application.
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- title: 'Flutter Demo',
- theme: ThemeData(
- primarySwatch: Colors.blue,
- ),
- home : Scaffold(
- appBar : AppBar(
- title : Text("Sertifikasi List"),
- backgroundColor : Colors.blue
- ),
- body : MultiProvider(
- providers: [
- ChangeNotifierProvider(
- builder : (context) => SertifikasiProvider()
- )
- ],
- child : MyHomePage(title : 'Hello')
- )
- )
- );
- }
- }
- class MyHomePage extends StatefulWidget {
- MyHomePage({Key key, this.title}) : super(key: key);
- final String title;
- @override
- _MyHomePageState createState() => _MyHomePageState();
- }
- class _MyHomePageState extends State<MyHomePage> {
- ScrollController scrollController;
- final GlobalKey<RefreshIndicatorState> _refreshIndicatorState = new GlobalKey<RefreshIndicatorState>();
- _scrollListener(){
- if(scrollController.offset >= scrollController.position.maxScrollExtent &&
- !scrollController.position.outOfRange){
- final providers = Provider.of<SertifikasiProvider>(context);
- if(providers.getFetching == false){
- providers.setFetching(true);
- providers.getSertifikasiList();
- }
- }
- }
- @override
- void initState(){
- scrollController = new ScrollController();
- scrollController.addListener(_scrollListener);
- WidgetsBinding.instance
- .addPostFrameCallback((_) => _refreshIndicatorState.currentState.show());
- super.initState();
- }
- @override
- Widget build(BuildContext context){
- final sertifikasiProvider = Provider.of<SertifikasiProvider>(context);
- if(sertifikasiProvider.getSertifikasiAsesiList == null){
- sertifikasiProvider.getSertifikasiList();
- print("LENGTH : " + sertifikasiProvider.getSertifikasiAsesiList.length.toString());
- }
- return RefreshIndicator(
- key : _refreshIndicatorState,
- onRefresh : refreshSertifikasiList(),
- child : SingleChildScrollView(
- controller : scrollController,
- child : Container(
- padding : EdgeInsets.all(16),
- child : Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- Text("Sertifikasi Asesi List"),
- SizedBox(height : 30),
- sertifikasiProvider.getSertifikasiAsesiList.length > 0 ?
- SertifikasiListView() : Center(child : LoadingAnimation()),
- ],
- )
- )
- )
- );
- }
- refreshSertifikasiList() {
- final providers = Provider.of<SertifikasiProvider>(context);
- if(providers.getSertifikasiAsesiList.length > 0){
- providers.getSertifikasiAsesiList.clear();
- providers.setFetching(true);
- providers.getSertifikasiList();
- }
- }
- }
- class SertifikasiListView extends StatelessWidget {
- @override
- Widget build(BuildContext context){
- return Consumer<SertifikasiProvider>(
- builder : (context , providers , child){
- return Column(
- children: <Widget>[
- Container(
- child: ListView.builder(
- itemCount : providers.getSertifikasiAsesiList.length,
- shrinkWrap : true,
- physics: NeverScrollableScrollPhysics(),
- itemBuilder : ( context , position ){
- var data = providers.getSertifikasiAsesiList[position];
- return Card(
- elevation : 1,
- child : Container(
- padding : const EdgeInsets.all(16),
- child : Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- Text("Nama Lengkap : " + data.nama_lengkap ,
- style : TextStyle(color : Colors.green , fontSize : 17 ,
- fontWeight : FontWeight.bold)),
- SizedBox(height : 10.0),
- Text("Tempat Lahir : " + data.tempat_lahir ,
- style : TextStyle(fontSize : 16 , color : Colors.black))
- ],
- )
- )
- );
- }
- ),
- ),
- providers.getFetching == true ? Center(
- child : CircularProgressIndicator() ,
- ) : Container()
- ],
- );
- }
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement