154 lines
3.6 KiB
Dart
154 lines
3.6 KiB
Dart
import 'package:get/get.dart';
|
|
import 'package:pull_to_refresh/pull_to_refresh.dart';
|
|
|
|
import '../../network/api.dart';
|
|
import '../../network/dio_manager.dart';
|
|
import 'state.dart';
|
|
|
|
class FriendslistLogic extends GetxController {
|
|
|
|
final RefreshController refreshController = RefreshController();
|
|
final FriendslistState state = FriendslistState();
|
|
final type = Get.arguments as String;
|
|
int page = 1;
|
|
int isVip = 0;
|
|
List<UserInfo> lists = [];
|
|
@override
|
|
void onInit() async{
|
|
super.onInit();
|
|
initList();
|
|
}
|
|
|
|
|
|
initList() async{
|
|
if(page==1){
|
|
lists.clear();
|
|
}
|
|
switch(type){
|
|
case "0":
|
|
var data =
|
|
await DioManager.instance.get(url: Api.followList, params: {
|
|
'page':page
|
|
});
|
|
var bean = BaseResponse<User>.fromJson(data, (data) => User.fromJson(data));
|
|
if (bean.isSuccess()) {
|
|
lists.addAll(bean.data.lists);
|
|
}
|
|
update();
|
|
if(page == 1){
|
|
refreshController.refreshCompleted();
|
|
}else{
|
|
refreshController.loadComplete();
|
|
}
|
|
return ;
|
|
case "1":
|
|
var data =
|
|
await DioManager.instance.get(url: Api.fansList, params: {
|
|
'page':page
|
|
});
|
|
var bean = BaseResponse<User>.fromJson(data, (data) => User.fromJson(data));
|
|
if (bean.isSuccess()) {
|
|
lists.addAll(bean.data.lists);
|
|
}
|
|
update();
|
|
if(page == 1){
|
|
refreshController.refreshCompleted();
|
|
}else{
|
|
refreshController.loadComplete();
|
|
}
|
|
return ;
|
|
case "2":
|
|
var data =
|
|
await DioManager.instance.get(url: Api.visitList, params: {
|
|
'page':page
|
|
});
|
|
var bean = BaseResponse<User>.fromJson(data, (data) => User.fromJson(data));
|
|
if (bean.isSuccess()) {
|
|
lists.addAll(bean.data.lists);
|
|
}
|
|
update();
|
|
if(page == 1){
|
|
refreshController.refreshCompleted();
|
|
}else{
|
|
refreshController.loadComplete();
|
|
}
|
|
return ;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class User {
|
|
final List<UserInfo> lists;
|
|
final int total;
|
|
|
|
User({required this.lists, required this.total});
|
|
|
|
factory User.fromJson(Map<String, dynamic> json) {
|
|
final List<dynamic> userList = json['lists'];
|
|
final List<UserInfo> users = userList.map((user) => UserInfo.fromJson(user)).toList();
|
|
final int total = json['total'];
|
|
return User(lists: users, total: total);
|
|
}
|
|
}
|
|
|
|
class UserInfo {
|
|
final int id;
|
|
final String nickname;
|
|
final String avatar;
|
|
final String signature;
|
|
final String birthday;
|
|
final int age;
|
|
final int vip;
|
|
final int gender;
|
|
final int role;
|
|
final int orientation;
|
|
|
|
final double lng;
|
|
final double lat;
|
|
final String city;
|
|
final String avatarThumb;
|
|
|
|
UserInfo({
|
|
required this.id,
|
|
required this.nickname,
|
|
required this.avatar,
|
|
required this.signature,
|
|
required this.birthday,
|
|
required this.age,
|
|
required this.vip,
|
|
required this.gender,
|
|
required this.role,
|
|
required this.orientation,
|
|
required this.lng,
|
|
required this.lat,
|
|
required this.city,
|
|
required this.avatarThumb,
|
|
});
|
|
|
|
factory UserInfo.fromJson(Map<String, dynamic> json) {
|
|
return UserInfo(
|
|
id: json['id'],
|
|
nickname: json['nickname'],
|
|
avatar: json['avatar'],
|
|
signature: json['signature'],
|
|
birthday: json['birthday'],
|
|
age: json['age'],
|
|
vip: json['vip'],
|
|
gender: json['gender'],
|
|
role: json['role'],
|
|
orientation: json['orientation'],
|
|
lng: json['lng'],
|
|
lat: json['lat'],
|
|
city: json['city'],
|
|
avatarThumb: json['avatar_thumb'],
|
|
);
|
|
}
|
|
}
|
|
|