import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/message.dart'; import 'package:huixiang/retrofit/data/page.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/classic_header.dart'; import 'package:huixiang/view_widget/my_appbar.dart'; import 'package:huixiang/view_widget/my_footer.dart'; import 'package:huixiang/view_widget/no_data_view.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class SystemMessagePage extends StatefulWidget { @override State createState() { return _SystemMessagePage(); } } class _SystemMessagePage extends State { ApiService apiService; @override void initState() { super.initState(); SharedPreferences.getInstance().then((value) { apiService = ApiService(Dio(), token: value.getString("token"), context: context); queryMessage(); }); } int pageNum = 1; List messages = []; _refresh() { pageNum = 1; queryMessage(); } queryMessage() async { BaseData baseData = await apiService.msgList({ "pageNum": pageNum, "pageSize": 10, "searchKey": "", "state": "", "typed": "" }).catchError((onError) { _refreshController.loadFailed(); _refreshController.refreshFailed(); }); if (baseData != null && baseData.isSuccess) { PageInfo pageInfo = PageInfo.fromJson(baseData.data); if (pageNum == 1) { messages.clear(); } messages.addAll(pageInfo.list.map((e) => Message.fromJson(e)).toList()); _refreshController.loadComplete(); _refreshController.refreshCompleted(); if (mounted) setState(() {}); if (pageNum * 10 > int.tryParse(pageInfo.total)) { _refreshController.loadNoData(); } else { pageNum += 1; } } else { _refreshController.loadFailed(); _refreshController.refreshFailed(); } } RefreshController _refreshController = RefreshController(); @override Widget build(BuildContext context) { return Scaffold( appBar: MyAppBar( background: Color(0xFFF7F7F7), leadingColor: Colors.black, title: S.of(context).xitongxiaoxi, titleSize: 18.sp, titleColor: Colors.black, ), body: SmartRefresher( enablePullDown: true, enablePullUp: true, header: MyHeader(), physics: BouncingScrollPhysics(), footer: CustomFooter( loadStyle: LoadStyle.ShowWhenLoading, builder: (BuildContext context, LoadStatus mode) { return MyFooter(mode); }, ), controller: _refreshController, onRefresh: _refresh, onLoading: () { queryMessage(); }, child: (messages == null || messages.length == 0) ? NoDataView( isShowBtn: false, text: S.of(context).haimeiyouxiaoxi, fontSize: 16.sp, margin: EdgeInsets.only(top: 120.h), ) : ListView.builder( padding: EdgeInsets.only(top: 16), itemCount: messages.length, physics: NeverScrollableScrollPhysics(), itemBuilder: (context, position) { return GestureDetector( onTap: () { if (messages[position].typed == 2) { Navigator.of(context) .pushNamed('/router/exchange_order_details'); } }, child: buildMessageItem(messages[position]), ); }), ), ); } Widget buildMessageItem(Message message) { return Container( margin: EdgeInsets.only(left: 16.w, right: 16.w, top: 8.h, bottom: 8.h), padding: EdgeInsets.all(20.w), decoration: BoxDecoration( color: Colors.white, boxShadow: [ BoxShadow( color: Colors.black.withAlpha(12), offset: Offset(0, 3), blurRadius: 14, spreadRadius: 0, ) ], borderRadius: BorderRadius.circular(8), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ Row( children: [ Image.asset( (message.typed == 1) ? "assets/image/icon_system_notices.png" : (message.typed == 2) ? "assets/image/icon_system_order.png" : "assets/image/icon_system_recharge.png", width: 24.w, height: 24.h, ), SizedBox( width: 4.w, ), Text( (message.typed == 1) ? S.of(context).xitongtongzhi : (message.typed == 2) ? S.of(context).dingdanxiaoxi : S.of(context).chongzhixiaoxi, style: TextStyle( fontSize: 14.sp, fontWeight: FontWeight.bold, color: Color(0xFF060606), ), ) ], ), Text( message.updateTime, style: TextStyle( fontSize: 10.sp, color: Color(0xFFA29E9E), ), ), ], ), if (message.typed != 3) Container( margin: EdgeInsets.only(left: 28.w, top: 12.h), child: Text( S.of(context).ninyouyigexindedingdan, style: TextStyle( fontSize: 10.sp, color: Color(0xFF353535), ), ), ) else Container( margin: EdgeInsets.only(left: 28.w, top: 18.h), child: Text( message.title, style: TextStyle( fontSize: 20.sp, fontWeight: MyFontWeight.semi_bold, color: Color(0xFF353535), ), ), ), if (message.typed != 3) Container( margin: EdgeInsets.only(left: 28.w, top: 22.h), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( S.of(context).chakangengduo, style: TextStyle( fontSize: 12.sp, fontWeight: FontWeight.bold, color: Color(0xFF353535), ), ), Icon( Icons.keyboard_arrow_right, color: Colors.black, ) ], ), ) else Container( margin: EdgeInsets.only(left: 28.w, top: 22.h), child: Text( message.content, style: TextStyle( fontSize: 10.sp, color: Color(0xFF353535), ), ), ), ], ), ); } }