Download this source code for
5 USD


Download this source code for
5 USD


Download this source code for
5 USD


Download this source code for
5 USD

pull to pulltorefreshnotification

flutter plugin for building pull to refresh effects with pulltorefreshnotification and pulltorefreshcontainer quickly.

pulltorefreshnotification

sample 1 appbar

build appbar to pull to refresh with pulltorefreshcontainer

Flutter plugin for building pull to refresh effects with PullToRefreshNotification

   widget build(buildcontext context) {
 return pulltorefreshnotification(
      color: colors.blue,
      pullbackonrefresh: true,
      onrefresh: onrefresh,
      child: customscrollview(
        slivers: <widget>[
          pulltorefreshcontainer(buildpulltorefreshappbar),
          sliverlist(
              delegate:
                  sliverchildbuilderdelegate((buildcontext context, int index) {
            return container(
                padding: edgeinsets.only(bottom: 4.0),
                child: column(
                  children: <widget>[
                    text(
                      "list item : ${listlength - index}",
                      style: textstyle(fontsize: 15.0, inherit: false),
                    ),
                    divider(
                      color: colors.grey,
                      height: 2.0,
                    )
                  ],
                ));
          }, childcount: listlength)),
        ],
      ),
    );
}
    
     widget buildpulltorefreshappbar(pulltorefreshscrollnotificationinfo info) {
        print(info?.mode);
        print(info?.dragoffset);
    //    print("------------");
        var action = padding(
          child: info?.refreshwiget ?? icon(icons.more_horiz),
          padding: edgeinsets.all(15.0),
        );
        var offset = info?.dragoffset ?? 0.0;
    //    var mode = info?.mode;
    //    if (mode != null && mode == refreshindicatormode.done) {
    //      //showtoast("refresh done");
    //    }
        return sliverappbar(
            pinned: true,
            title: text("pulltorefreshappbar"),
            centertitle: true,
            expandedheight: 200.0 + offset,
            actions: <widget>[action],
            flexiblespace: flexiblespacebar(
                //centertitle: true,
                title: text(
                  info?.mode?.tostring() ?? "",
                  style: textstyle(fontsize: 10.0),
                ),
                collapsemode: collapsemode.pin,
                background: image.asset(
                  "assets/467141054.jpg",
                  //fit: offset > 0.0 ? boxfit.cover : boxfit.fill,
                  fit: boxfit.cover,
                )));
      }

sample 2 header

build header to pull to refresh with pulltorefreshcontainer.
and you can easy to handle the status in pulling.

Flutter plugin for building pull to refresh effects with PullToRefreshNotification

  widget build(buildcontext context) {
    return pulltorefreshnotification(
       color: colors.blue,
       onrefresh: onrefresh,
       maxdragoffset: 80.0,
       child: customscrollview(
         slivers: <widget>[
           sliverappbar(
             pinned: true,
             title: text("pulltorefreshheader"),
           ),
           pulltorefreshcontainer(buildpulltorefreshheader),
           sliverlist(
               delegate:
                   sliverchildbuilderdelegate((buildcontext context, int index) {
             return container(
                 padding: edgeinsets.only(bottom: 4.0),
                 child: column(
                   children: <widget>[
                     text(
                       "list item : ${listlength - index}",
                       style: textstyle(fontsize: 15.0, inherit: false),
                     ),
                     divider(
                       color: colors.grey,
                       height: 2.0,
                     )
                   ],
                 ));
           }, childcount: listlength)),
         ],
       ),
     );
   }
 
   widget buildpulltorefreshheader(pulltorefreshscrollnotificationinfo info) {
     //print(info?.mode);
     //print(info?.dragoffset);
 //    print("------------");
     var offset = info?.dragoffset ?? 0.0;
     var mode = info?.mode;
     widget refreshwiget = container();
     //it should more than 18, so that refreshprogressindicator can be shown fully
     if (info?.refreshwiget != null &&
         offset > 18.0 &&
         mode != refreshindicatormode.error) {
       refreshwiget = info.refreshwiget;
     }
 
     widget child = null;
     if (mode == refreshindicatormode.error) {
       child = gesturedetector(
           ontap: () {
             // refreshnotification;
             info?.pulltorefreshnotificationstate?.show();
           },
           child: container(
             color: colors.grey,
             alignment: alignment.bottomcenter,
             height: offset,
             width: double.infinity,
             //padding: edgeinsets.only(top: offset),
             child: container(
               padding: edgeinsets.only(left: 5.0),
               alignment: alignment.center,
               child: text(
                 mode?.tostring() + "  click to retry" ?? "",
                 style: textstyle(fontsize: 12.0, inherit: false),
               ),
             ),
           ));
     } else {
       child = container(
         color: colors.grey,
         alignment: alignment.bottomcenter,
         height: offset,
         width: double.infinity,
         //padding: edgeinsets.only(top: offset),
         child: row(
           mainaxisalignment: mainaxisalignment.center,
           children: <widget>[
             refreshwiget,
             container(
               padding: edgeinsets.only(left: 5.0),
               alignment: alignment.center,
               child: text(
                 mode?.tostring() ?? "",
                 style: textstyle(fontsize: 12.0, inherit: false),
               ),
             )
           ],
         ),
       );
     }
 
     return slivertoboxadapter(
       child: child,
     );
   }
 
   bool success = false;
   future<bool> onrefresh() {
     final completer<bool> completer = new completer<bool>();
     new timer(const duration(seconds: 2), () {
       completer.complete(success);
       success = true;
     });
     return completer.future.then((bool success) {
       if (success) {
         setstate(() {
           listlength += 10;
         });
       }
       return success;
     });
   }

sample 3 image

build zoom image to pull to refresh with using pulltorefreshcontainer.

Flutter plugin for building pull to refresh effects with PullToRefreshNotification

 widget build(buildcontext context) {
     // todo: implement build
     return pulltorefreshnotification(
       color: colors.blue,
       pullbackonrefresh: true,
       onrefresh: onrefresh,
       child: customscrollview(
         slivers: <widget>[
           sliverappbar(
             title: text("pulltorefreshimage"),
           ),
           pulltorefreshcontainer(buildpulltorefreshimage),
           sliverlist(
               delegate:
                   sliverchildbuilderdelegate((buildcontext context, int index) {
             return container(
                 padding: edgeinsets.only(bottom: 4.0),
                 child: column(
                   children: <widget>[
                     text(
                       "list item : ${listlength - index}",
                       style: textstyle(fontsize: 15.0, inherit: false),
                     ),
                     divider(
                       color: colors.grey,
                       height: 2.0,
                     )
                   ],
                 ));
           }, childcount: listlength)),
         ],
       ),
     );
   }
   
   widget buildpulltorefreshimage(pulltorefreshscrollnotificationinfo info) {
     print(info?.mode);
     print(info?.dragoffset);
 //    print("------------");
     var offset = info?.dragoffset ?? 0.0;
     widget refreshwiget = container();
     if (info?.refreshwiget != null) {
       refreshwiget = material(
         type: materialtype.circle,
         color: theme.of(context).canvascolor,
         elevation: 2.0,
         child: padding(
           padding: edgeinsets.all(12),
           child: info.refreshwiget,
         ),
       );
     }
 
     return slivertoboxadapter(
       child: stack(
         alignment: alignment.center,
         children: <widget>[
           container(
               height: 200.0 + offset,
               width: double.infinity,
               child: image.asset(
                 "assets/467141054.jpg",
                 //fit: offset > 0.0 ? boxfit.cover : boxfit.fill,
                 fit: boxfit.cover,
               )),
           center(
             child: row(
               mainaxisalignment: mainaxisalignment.center,
               children: <widget>[
                 refreshwiget,
                 container(
                   padding: edgeinsets.only(left: 5.0),
                   alignment: alignment.center,
                   child: text(
                     info?.mode?.tostring() ?? "",
                     style: textstyle(fontsize: 12.0, inherit: false),
                   ),
                 )
               ],
             ),
           )
         ],
       ),
     );
   }

please see the example app of this for a full example.


Download this source code for
5 USD


Download this source code for
5 USD


Download this source code for
5 USD


Download this source code for
5 USD

Top