import 'dart:ui'; import 'package:flutter/material.dart'; import '../styles/colors.dart'; import 'package:flutter/cupertino.dart'; import '../styles/totast.dart'; import '../model/PlayerInfo.dart'; import '../net/HttpManager.dart'; import '../net/Result.dart'; import '../model/HouseInfo.dart'; import '../model/GameInfo.dart'; import '../pages/RoomInfo.dart'; import 'package:flutter_redux/flutter_redux.dart'; import '../redux/AppState.dart'; import '../widget/ScoreType.dart'; import 'package:cached_network_image/cached_network_image.dart'; import '../widget/HouseItem.dart'; class RecordList extends StatefulWidget { @override RecordListState createState() => RecordListState(); } class RecordListState extends State with SingleTickerProviderStateMixin { final List myTabs = [Tab(text: '我创建的'), Tab(text: '我加入的')]; TabController _tabController; @override void initState() { super.initState(); _tabController = TabController(length: myTabs.length, vsync: this); } @override void dispose() { super.dispose(); _tabController.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( // backgroundColor: PRIMARY_COLOR, title: Padding( padding: EdgeInsets.only(right: 56), child: TabBar( controller: _tabController, tabs: myTabs, indicatorColor: Colors.white, labelColor: Colors.white, indicatorSize: TabBarIndicatorSize.label, ), ), centerTitle: true, elevation: 0, ), body: Container( padding: EdgeInsets.only(top: 10), child: TabBarView(controller: _tabController, children: [RecordInfo(0), RecordInfo(1)]), color: Color(0xFF2B2B42), )); } } class RecordInfo extends StatefulWidget { int type; RecordInfo(this.type); @override RecordInfoState createState() => RecordInfoState(); } class RecordInfoState extends State { ScrollController _mControll; List playerList = []; List houseList = []; int currentPage = 1; bool isMore = false; Future getHousePage() async { Result res = await HttpManager.get('houseInfo/page', data: { 'userId': StoreProvider.of(context).state.userInfo.id, 'currentPage': currentPage, 'pageNumber': 20, 'orderByStr': 'status_flag_,asc' }); Toast.hide(); List list = houseList; if (currentPage == 1) { list = []; } if (res.success) { for (var item in res.data['pp']) { HouseInfo tip = HouseInfo.fromJson(item); list.add(tip); } if (res.data['page']['currentPage'] < res.data['page']['totalPage']) { isMore = true; } } else {} setState(() { houseList = list; }); } Future getListPage() async { isMore = false; Toast.show(context, '加载中', -1, 'loading'); if (widget.type == 0) { getHousePage(); return; } Result res = await HttpManager.get('playerInfo/page', data: {'userId': StoreProvider.of(context).state.userInfo.id, 'currentPage': currentPage, 'pageNumber': 20}); Toast.hide(); List list = playerList; if (currentPage == 1) { list = []; } if (res.success) { for (var item in res.data['pp']) { PlayerInfo tip = PlayerInfo.fromJson(item); list.add(tip); } if (res.data['page']['currentPage'] < res.data['page']['totalPage']) { isMore = true; } } else {} setState(() { playerList = list; }); } @override void initState() { super.initState(); _mControll = ScrollController(); _mControll.addListener(() { if (_mControll.position.pixels == _mControll.position.maxScrollExtent) { if (isMore) { currentPage++; getListPage(); } } }); Future.delayed(Duration.zero, () => getListPage()); } @override void dispose() { _mControll.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: Container( color: Color(0xFF2B2B42), child: RefreshIndicator( color: ThemeData().primaryColor, backgroundColor: Colors.white, onRefresh: () async { await Future.delayed(const Duration(seconds: 1)); }, child: widget.type == 0 ? ListView.builder( physics: AlwaysScrollableScrollPhysics(), controller: _mControll, itemCount: houseList.isNotEmpty ? houseList.length : 1, itemBuilder: (BuildContext context, int index) { if (houseList.isEmpty) { return Text( '还没有战绩快去比赛吧...', style: TextStyle(color: Colors.white30, fontSize: 13, height: 2), textAlign: TextAlign.center, ); } return HouseItem(houseList[index],houseList[index].gameInfo); }) : ListView.builder( physics: AlwaysScrollableScrollPhysics(), controller: _mControll, itemCount: playerList.isNotEmpty ? playerList.length : 1, itemBuilder: (BuildContext context, int index) { if (playerList.isEmpty) { return Text( '还没有战绩快去比赛吧...', style: TextStyle(color: Colors.white30, fontSize: 13, height: 2), textAlign: TextAlign.center, ); } return HouseItem( playerList[index].houseInfo, playerList[index].gameInfo, playerInfo: playerList[index]); }), )), ); } } // class houseItem extends StatelessWidget { // houseItem({Key key, this.roomInfo, this.gameInfo, this.playerInfo, this.type = 0}) : super(key: key); // final HouseInfo roomInfo; // final GameInfo gameInfo; // final PlayerInfo playerInfo; // final int type; // @override // Widget build(BuildContext context) { // List imageList = [ // 'images/jiangpai_huangjin.png', // 'images/jiangpai_baiyin.png', // 'images/jiangpai_qingtong.png', // 'images/zhanji_icon_04.png', // 'images/jiangpai_bojin.png' // ]; // String imageSrc = ''; // String tishiStr = ''; // Color tishiColor; // bool isImport = false; // if (playerInfo != null) { // if (playerInfo.medal != null) { // if (playerInfo.medal == 'platinum') { // imageSrc = imageList[4]; // } else if (playerInfo.medal == 'gold') { // imageSrc = imageList[0]; // } else if (playerInfo.medal == 'silver') { // imageSrc = imageList[1]; // } else if (playerInfo.medal == 'bronze') { // imageSrc = imageList[2]; // } // else if(playerInfo.rank!=null){ // tishiStr='第${playerInfo.rank}名'; // } // // if (playerInfo.houseRank < 4) { // // imageSrc = imageList[playerInfo.houseRank - 1]; // // } else { // // imageSrc = imageList[3]; // // } // } // if (playerInfo.statusFlag != null) { // if (playerInfo.statusFlag == 6) { // imageSrc = imageList[3]; // } else if (playerInfo.statusFlag == 0) { // tishiStr = '未开始'; // } else if (playerInfo.statusFlag == 2) { // tishiStr = '进行中'; // } else if (playerInfo.statusFlag < 4 || (roomInfo.statusFlag >= 2 && roomInfo.statusFlag < 4)) { // tishiStr = '结算中'; // } // } // } else { // if (roomInfo.statusFlag == 0) { // tishiStr = '未开始'; // tishiColor = Theme.of(context).primaryColor; // } else if (roomInfo.statusFlag == 2) { // tishiStr = '进行中'; // tishiColor = Color(0xFFA9AABA); // } else if (roomInfo.statusFlag == 4) { // tishiStr = '已结束'; // tishiColor = Color(0xFF595B77); // } else { // tishiStr = '结算中'; // tishiColor = Color(0xFF595B77); // } // } // if (roomInfo == null) { // return Container(); // } // return Container( // decoration: BoxDecoration( // // gradient: LinearGradient( // // colors: [Color(0xFF3F4261), Color(0xFF323456)], // // begin: Alignment.topCenter, // // end: Alignment.bottomCenter, // // ), // color: Color(0xFF363759), // ), // child: Column( // children: [ // Material( // color: Colors.transparent, // child: InkWell( // child: Padding( // padding: EdgeInsets.all(15), // child: Row( // children: [ // Image.network( // gameInfo.icon, // width: 48, // height: 48, // ), // Container( // width: 10, // ), // Expanded( // flex: 1, // child: Column( // crossAxisAlignment: CrossAxisAlignment.start, // children: [ // Row( // children: [ // LimitedBox( // maxWidth: 170, // child: Text( // roomInfo.houseName, // style: TextStyle(color: Colors.white, fontSize: 14, fontWeight: FontWeight.w500), // maxLines: 1, // overflow: TextOverflow.ellipsis, // ), // ), // Container( // width: 5, // ), // ScoreType(roomInfo.scoreType) // // Container( // // margin: EdgeInsets.only(left: 6), // // child: Image.network(roomInfo.houseLevel.icon, // // width: 14), // // ), // // Container( // // margin: EdgeInsets.only(left: 1), // // child: Text( // // roomInfo.houseLevel.levelName, // // style: TextStyle( // // color: Color(0xFFF9D881), fontSize: 9), // // )), // ], // ), // Text( // roomInfo.houseAbstract ?? '', // style: TextStyle(fontSize: 12, fontWeight: FontWeight.w400, color: Color(0xFF9BA0AE)), // maxLines: 2, // overflow: TextOverflow.ellipsis, // ) // ], // ), // ), // imageSrc != '' // ? Image.asset(imageSrc) // : (type == 2 // ? Text(tishiStr, style: TextStyle(color: isImport ? PRIMARY_COLOR : Colors.white54, fontSize: 14)) // : Container( // color: tishiColor, // padding: EdgeInsets.symmetric(vertical: 4, horizontal: 9), // child: Text( // tishiStr, // style: TextStyle(color: Color(0xFF252532), fontSize: 12), // ), // )) // ], // ), // ), // onTap: () { // Navigator.push(context, CupertinoPageRoute(builder: (context) => RoomInfo(roomId: roomInfo.id.toString()))); // }, // ), // ), // Container( // margin: EdgeInsets.symmetric(horizontal: 15), // height: 1, // color: Color(0xFF2B2B42), // ) // ], // ), // ); // } // }