日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php下拉上滑分页,Flutter实现下拉刷新 上拉分页加载更多

發(fā)布時(shí)間:2025/3/15 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php下拉上滑分页,Flutter实现下拉刷新 上拉分页加载更多 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Flutter實(shí)現(xiàn)下拉刷新和上拉分頁(yè)加載更多

在Flutter官方sdk中給我們提供了下拉刷新的組件RefreshIndicator。但是沒有提供上拉分頁(yè)加載更多的組件。但是在Flutter ListView中有一個(gè)ScrollController屬性,它就是專門來控制ListView滑動(dòng)事件,在這里我們可以根據(jù)ListView的位置來判斷是否滑動(dòng)到了底部來做加載更多的處理。

Api接口:

二、Flutter 下拉刷新

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text("請(qǐng)求數(shù)據(jù)Dio Demo"),

),

body: this._list.length>0?

RefreshIndicator(

onRefresh: _onRefresh,

child:ListView.builder(

itemCount: this._list.length,

itemBuilder: (context,index){

return ListTile(title:Text(this._list[index]["title"]));

}

)

)

:Text("加載中...")

);

}

Future _onRefresh() async{

print('執(zhí)行刷新');

}

三、Flutter 上拉分頁(yè)加載更多

_scrollController.position.pixels 滾動(dòng)的距離

_scrollController.position.maxScrollExtent 總距離

完整代碼

import 'dart:convert';

import 'package:flutter/material.dart';

import 'package:dio/dio.dart';

class HttpDemo extends StatefulWidget {

HttpDemo({Key key}) : super(key: key);

_HttpDemoState createState() => _HttpDemoState();

}

class _HttpDemoState extends State {

ScrollController _scrollController = ScrollController(); //listview的控制器

List _list=[];

int _page=1;

bool isLoading = false; //是否正在加載數(shù)據(jù)

@override

void initState() {

super.initState();

this._getData();

_scrollController.addListener(() {

if (_scrollController.position.pixels >

_scrollController.position.maxScrollExtent-20) {

print('滑動(dòng)到了最底部');

_getData();

}

});

}

_getData() async{

var apiUrl="http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=${this._page}";

Response result=await Dio().get(apiUrl);

// print(json.decode(result.data)["result"]);

setState(() {

this._list.addAll(json.decode(result.data)["result"]);

this._page++;

});

}

/**

* 加載更多時(shí)顯示的組件,給用戶提示

*/

Widget _getMoreWidget() {

return Center(

child: Padding(

padding: EdgeInsets.all(10.0),

child: Row(

mainAxisAlignment: MainAxisAlignment.center,

crossAxisAlignment: CrossAxisAlignment.center,

children: [

Text(

'加載中...',

style: TextStyle(fontSize: 16.0),

),

CircularProgressIndicator(

strokeWidth: 1.0,

)

],

),

),

);

}

Future _onRefresh() async{

print('執(zhí)行刷新');

// this._getData();

await Future.delayed(Duration(seconds: 3), () {

print('refresh');

});

}

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text("請(qǐng)求數(shù)據(jù)Dio Demo"),

),

body: this._list.length>0?

RefreshIndicator(

onRefresh: _onRefresh,

child:ListView.builder(

itemCount: this._list.length,

controller: _scrollController,

itemBuilder: (context,index){

if (index == this._list.length-1){

return Column(

children: [

ListTile(

title: Text(this._list[index]["title"],maxLines: 1),

onTap: (){

Navigator.pushNamed(context, '/newsContent');

},

),

Divider(),

_getMoreWidget()

],

);

}else{

return Column(

children: [

ListTile(

title: Text(this._list[index]["title"],maxLines: 1),

onTap: (){

Navigator.pushNamed(context, '/newsContent');

},

),

Divider()

],

);

}

}

)

)

:_getMoreWidget()

);

}

}

總結(jié)

以上是生活随笔為你收集整理的php下拉上滑分页,Flutter实现下拉刷新 上拉分页加载更多的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。