Flutter-ListView+Pulltorefresh

//https://github.com/peng8350/flutter_pulltorefresh

import 'package:flutter/material.dart';

import 'package:dio/dio.dart';

import 'movie.dart';

import 'dart:convert';

import 'package:flutter/cupertino.dart';

import "package:pull_to_refresh/pull_to_refresh.dart";

class ListPulltorefreshWidgetextends StatefulWidget {

String_title;

ListPulltorefreshWidget(this._title);

@override

  _ListPulltorefreshWidgetState createState() => _ListPulltorefreshWidgetState();

}

class _ListPulltorefreshWidgetStateextends State {

ListmovieList = [];

RefreshController_refreshController;

@override

  void initState() {

super.initState();

getContent();

_refreshController = RefreshController();

//    getContent().then((List list){

//      setState(() {

//        movieList = list;

//      });

//    });

  }

void enterRefresh() {

_refreshController.requestRefresh(true);

}

getBody() {

if (movieList.length !=0) {

return Container(

child:new SmartRefresher(

enablePullDown:true,

enablePullUp:true,

controller:_refreshController,

onRefresh: (up) {

if (up)

new Future.delayed(const Duration(milliseconds:2009))

.then((val) {

//                    _refreshController.scrollTo(_refreshController.scrollController.offset + 100.0);

                    _refreshController.sendBack(true, RefreshStatus.idle);

setState(() {

});

_refreshController.sendBack(true, RefreshStatus.completed);

});

else {

new Future.delayed(const Duration(milliseconds:2009))

.then((val) {

//                    _refreshController.scrollTo(_refreshController.scrollController.offset + 100.0);

                    _refreshController.sendBack(false, RefreshStatus.idle);

//                    setState(() {

//

//                    });

//                    _refreshController.sendBack(false, RefreshStatus.completed);

                  });

}

},

onOffsetChange: _onOffsetCallback,

child: ListView.builder(

reverse:true,

//                itemExtent: 150.0,

                itemCount:movieList.length,

itemBuilder: (BuildContext context, int position) {

return getItem(movieList[position]);

},

)

));

//      return ListView.builder(

//          itemCount: movieList.length,

//          itemBuilder: (BuildContext context, int position) {

//            return getItem(movieList[position]);

//          });

    }else {

// 加载菊花

      return CupertinoActivityIndicator();

}

}

void _onOffsetCallback(bool isUp, double offset) {

// if you want change some widgets state ,you should rewrite the callback

  }

@override

  Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(title: Text(widget._title),backgroundColor: Colors.lightBlue,),

body: getBody(),

);

}

getItem(var subject) {

//    演员列表

    var avatars = List.generate(subject.casts.length, (int index) =>

Container(

margin: EdgeInsets.only(left: index.toDouble() ==0.0 ?0.0 :16.0),

child: CircleAvatar(

backgroundColor: Colors.white10,

backgroundImage: NetworkImage(

subject.casts[index].avatars.small,

)

),

),

);

var row = Container(

margin: EdgeInsets.all(4.0),

child: Row(

children: [

ClipRRect(

borderRadius: BorderRadius.circular(4.0),

child: Image.network(

subject.images.large,

width:100.0, height:150.0,

fit: BoxFit.fill,

),

),

Expanded(

child: Container(

margin: EdgeInsets.only(left:8.0),

height:150.0,

child: Column(

crossAxisAlignment: CrossAxisAlignment.start,

children: [

//                    电影名称

                    Text(

subject.title,

style: TextStyle(

fontWeight: FontWeight.bold,

fontSize:20.0,

),

maxLines:1,

),

//                    豆瓣评分

                    Text(

'豆瓣评分:${subject.rating.average}',

style: TextStyle(

fontSize:16.0

                      ),

),

//                    类型

                    Text(

"类型:${subject.genres.join("、")}"

                    ),

//                    导演

                    Text(

'导演:${subject.directors[0].name}'

                    ),

//                    演员

                    Container(

margin: EdgeInsets.only(top:8.0),

child: Row(

children: [

Text('主演:'),

Row(

children: avatars,

)

],

),

)

],

),

)

)

],

),

);

return Card(

child: row,

);

}

//  Future> getContent() async {

//    BaseResp baseResp = await DioUtil().request(Method.get, 'http://api01.idataapi.cn:8000/news/qihoo?apikey=fhtmiuCEpY5wMir5tkPNSk5FE9tHWbjH96nn30n3PNiK4HH411huikTtQxGSu2tQ&kw=白&site=qq.com');

//    List bannerList;

//    print('lcj0000'+ String.fromCharCode(baseResp.code));

//    if (baseResp.status != 000000) {

//      print('lcj'+baseResp.msg);

//      return new Future.error(baseResp.msg);

//    }

//    if (baseResp.data != null) {

//      print('lcj111');

////      bannerList = baseResp.data.map((value) {

////        print('lcj33333');

////        return Data.fromJson(value);

////      }).toList();

//    }

//    return bannerList;

//  }

//  getContent() async {

//    BaseResp baseResp = await DioUtil().request(Method.get, 'http://api01.idataapi.cn:8000/news/qihoo?apikey=fhtmiuCEpY5wMir5tkPNSk5FE9tHWbjH96nn30n3PNiK4HH411huikTtQxGSu2tQ&kw=白&site=qq.com');

//    Map userMap = json.decode(baseResp.data);

//    var movie = new Movie.fromJson(userMap);

//    setState(() {

//        movieList = movie.data;

//    });

//  }

  getContent()async {

Response response =await Dio().get("https://api.douban.com/v2/movie/in_theaters");

Map userMap = json.decode(response.toString());

var movie1 =new movie.fromJson(userMap);

setState(() {

movieList = movie1.subjects;

});

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 原文地址 Flutter是谷歌推出的一款全新的移动app SDK。它旨在帮助开发人员和设计师为Android和IO...
    Sper_CL阅读 658评论 0 1
  • 一. 简介 一个核心组件,用于高效地显示一个可以垂直滚动的变化的数据列表。最基本的使用方式就是创建一个ListVi...
    飞奔的小马阅读 1,231评论 0 2
  • 第一个简单的示例代码: 1、yaml中添加库文件 cupertino_icons:^0.1.2 english_w...
    FrankyJ阅读 405评论 0 0
  • 根据《初中数学课堂学生学习行为有效性的策略研究》课题组安排,观摩了一节由课题负责韩校长上的试卷评讲课,本课内容是七...
    Isj张森林阅读 302评论 0 3
  • 用牙签撑起不知道肿了几天的眼皮,不知道的人还以为我是为了工作,那些奋战在一线的人,只是在脑海里一闪而过。 今天是连...
    莲祭璎殇阅读 318评论 0 0