getNewsList(bool isLoadMore) async {
DataUtils.isLogin().then((isLogin) {
if (isLogin) {
DataUtils.getAccessToken().then((accessToken) {
if (accessToken == null || accessToken.length == 0) {
return;
}
Map<String, dynamic> params = Map<String, dynamic>();
params[‘access_token’] = accessToken;
params[‘catalog’] = 1;
params[‘page’] = curPage;
params[‘pageSize’] = 10;//每次刷新10条
params[‘dataType’] = ‘json’;
///action/openapi/news_list
NetUtils.get(AppUrls.NEWS_LIST, params).then((data) {
//{
// “newslist”: [
// {
// “id”: 26754,
// “author”: “test33”,
// “pubDate”: “2013-09-17 16:49:50.0”,
// “title”: “asdfa”,
// “authorid”: 253469,
// “commentCount”: 0,
// “type”: 4
// }
// ],
// “notice”: {
// “replyCount”: 0,
// “msgCount”: 0,
// “fansCount”: 0,
// “referCount”: 0
// }
//}
print(‘Debug NEWS_LIST=====: $data’);
if (data != null && data.isNotEmpty) {
Map<String, dynamic> map = json.decode(data);
List _newsList = map[‘newslist’];
if (!mounted) return;
setState(() {
if (isLoadMore) {
//加载更多
newsList.addAll(_newsList);
} else {
newsList = _newsList;
}
});
}
});
});
}
});
}
@override
Widget build(BuildContext context) {
//没有登录就去登录
if (!isLogin) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(‘由于openapi限制,必须登录才能获取资讯!’),
InkWell(
onTap: () async {
final result = await Navigator.of(context).push(
MaterialPageRoute(builder: (context) => LoginWebPage()));
if (result != null && result == ‘refresh’) {
//登录成功
eventBus.fire(LoginEvent());
}
},
child: Text(‘去登录’),
),
],
),
);
}
//下拉刷新
Future _pullToRefresh() async {
curPage = 1;
getNewsList(false);
return null;
}
//下拉刷新的
return RefreshIndicator(
onRefresh: _pullToRefresh,
child: buildListView(),
);
}
Widget buildListView() {
if (newsList == null) {
getNewsList(false);
//返回转圈圈
return CupertinoActivityIndicator();
}
return ListView.builder(
controller: _controller,
itemCount: newsList.length,
itemBuilder: (context, index) {
return NewsListItem(newsList: newsList[index]);
});
}
}
NewsListItem.dart单个条目的布局,点击以后会跳转到详情的信息
import ‘package:flutter/material.dart’;
import ‘package:flutterapp2/pages/news_detail_page.dart’;
/**
- 新闻主界面Item的布局
*/
class NewsListItem extends StatelessWidget {
最后
由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
需要的朋友可以私信我【答案】或者点击这里免费领取
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img-J5brFiZx-1710967185534)]
[外链图片转存中…(img-lXQxTgNE-1710967185534)]
[外链图片转存中…(img-CyljqlK8-1710967185535)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-716t4Cix-1710967185535)]