import 'package:cached_network_image/cached_network_image.dart'; import 'package:chat/data/UserData.dart'; import 'package:chat/data/WebData.dart'; import 'package:chat/data/constants.dart'; import 'package:chat/generated/i18n.dart'; import 'package:chat/utils/CustomUI.dart'; import 'package:chat/utils/HttpUtil.dart'; import 'package:chat/utils/MessageMgr.dart'; import 'package:chat/utils/TokenMgr.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; class MoneyPicture extends StatefulWidget { @required final List imageList; MoneyPicture({Key key, this.imageList}) : super(key: key); _MoneyPictureState createState() => _MoneyPictureState(); } class _MoneyPictureState extends State { int selectId = 0; int originalMoneyId = 0; Widget _buildImg(data) { var width = (MediaQuery.of(context).size.width - 30) / 3; return InkWell( onTap: () { this.setState(() { if (selectId == data['Id']) { selectId = 0; } else { selectId = data['Id']; } }); }, child: Stack(children: [ Container( decoration: BoxDecoration(borderRadius: BorderRadius.circular(2.0)), width: width, height: width, padding: EdgeInsets.all(5), child: ClipRRect( borderRadius: BorderRadius.circular(10), child: CachedNetworkImage( imageUrl: data['ImgUrl'] == null ? "" : data['ImgUrl'], placeholder: CustomUI.buildImgLoding, fit: BoxFit.cover, ), )), Positioned( right: 0, child: Checkbox( value: data['Id'] == selectId, activeColor: Colors.blue, onChanged: (bool val) { // val 是布尔值 this.setState(() { if (selectId == data['Id']) { selectId = 0; } else { selectId = data['Id']; } }); }, )), ]), ); } @override void initState() { super.initState(); for (int i = 0; i < widget.imageList.length; i++) { var element = widget.imageList[i]; if (element['Type'] == PhotoType.money.index || element['Type'] == PhotoType.destroyMoney.index) { selectId = element['Id']; originalMoneyId = selectId; } } } @override Widget build(BuildContext context) { var list = widget.imageList.map((data) { return _buildImg(data); }).toList(); return Scaffold( appBar: AppBar( backgroundColor: AppColors.NewAppbarBgColor, leading: CustomUI.buildCustomLeading(context), title: Text( I18n.of(context).set_photo, style: TextStyle(color: AppColors.NewAppbarTextColor), textScaleFactor: 1.0, ), actions: [ Container( alignment: Alignment.center, child: new InkWell( child: new Padding( padding: EdgeInsets.only(right: 15, left: 15, top: 10, bottom: 10), child: new Text(I18n.of(context).determine, textScaleFactor: 1.0, style: Constants.AppBarActionTextStyle), ), onTap: () async { if (originalMoneyId == selectId) { Navigator.of(context).pop(); return; } Map rdata = { "userId": UserData().basicInfo.userId, "Id": selectId, }; rdata['sign'] = TokenMgr().getSign(rdata); Response res = await HttpUtil().post( 'user/setting/photosprice', data: rdata, isShowLoading: true); Map resData = res.data; if (resData['code'] == 0) { MessageMgr().emit('refresh_photo'); Navigator.of(context).pop(); } }, ), ) ], centerTitle: true, ), body: SafeArea( child: Container( padding: EdgeInsets.only(left: 10, top: 10, bottom: 10), height: MediaQuery.of(context).size.height, width: MediaQuery.of(context).size.width, //alignment: Alignment.center, child: SingleChildScrollView( child: Wrap( crossAxisAlignment: WrapCrossAlignment.start, children: list, ), )), )); } }