本文主要是介绍flutter app 漫威api客户端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android学了一段 自学flutter
数据来源漫威开放api 边学边做的作品
apikey 需要申请,每日限3000次请求
申请网址:https://developer.marvel.com
Github:https://github.com/MaxNeverSleep/marvelAPI-flutter
!新手代码,无法保证可读性,持续更新整理…!
内含接口文档,数据分为六大类
互相关联,比如一个comics里有很多charater
Events\事件
Comics\漫画
Charaters\人物
Series\系列
Creators\创作者
Stories\故事
主页面做成了tabview和viewpager
tabview里点图片是dialog样式查看图片大图,点击文字区域Expanded进入详情页
详情页detailpage
下图gif是一个Event事件的详情页
charaters和series相当于android水平分页加载的Listview
comics用了swiper (服务器估计外网,图片加载比较慢)
页面间相互的跳转原本用MaterialPageRoute…卡顿严重
后来用了get
https://pub.flutter-io.cn/packages/get
点击搜索icon打开搜索框弹出软键盘
当前在哪个tab里就搜索哪个tab的内容
(打开搜索框时切换tabview不能实时切换提示文字"search xxxxxxxx",但是搜索内容会变,因为左右切换页面用setstate会卡顿一下,妥协了,后期看看能不能解决。。)
请求参数
//常用参数 其他详见漫威的接口文档
"apikey":"申请到的公有key"
"ts":"当前时间戳"
"hash":"时间戳+私钥+公钥的md5值"
"offset":"分页值,比如offset20 就从第20个往后取limit个值返回"
"limit":"一次返回的数量"
//"titleStartsWith":"可选参数,搜索用的"//获取时间戳void getTimeStamp() {timeStamp=DateTime.now().millisecondsSinceEpoch.toString();}//获取hashvoid getHash() {var content = new Utf8Encoder().convert(timeStamp+_privateKey+_publicKey);var digest = md5.convert(content);// 这里其实就是 digest.toString()hash= hex.encode(digest.bytes);}//dio get请求拿数据
Future<bool> getSeries() async{getTimeStamp();getHash();Map<String, dynamic> paras = {"apikey":_publicKey,"ts":timeStamp,"hash":hash,"offset":_count,"titleStartsWith":value,};//这里的url请求数据种类不同 url不同 详见文档Dio dio = Dio();final response = await dio.get(_host+_getCharactersUrl,queryParameters: paras,);Map userMap = json.decode(response.toString());series = new SeriesDataEntity.fromJson(userMap);seriesEntityList.addAll(series.data.results);total=series.data.total;if(total==0){setState(() {titleString='Search No Results';});}return false;}
这篇关于flutter app 漫威api客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!