Hibok
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

147 líneas
4.7 KiB

  1. import 'package:cached_network_image/cached_network_image.dart';
  2. import 'package:chat/data/UserData.dart';
  3. import 'package:chat/data/WebData.dart';
  4. import 'package:chat/data/constants.dart';
  5. import 'package:chat/generated/i18n.dart';
  6. import 'package:chat/utils/CustomUI.dart';
  7. import 'package:chat/utils/HttpUtil.dart';
  8. import 'package:chat/utils/MessageMgr.dart';
  9. import 'package:chat/utils/TokenMgr.dart';
  10. import 'package:dio/dio.dart';
  11. import 'package:flutter/material.dart';
  12. class MoneyPicture extends StatefulWidget {
  13. @required
  14. final List imageList;
  15. MoneyPicture({Key key, this.imageList}) : super(key: key);
  16. _MoneyPictureState createState() => _MoneyPictureState();
  17. }
  18. class _MoneyPictureState extends State<MoneyPicture> {
  19. int selectId = 0;
  20. Widget _buildImg(data) {
  21. var width = (MediaQuery.of(context).size.width - 30) / 3;
  22. return InkWell(
  23. onTap: () {
  24. this.setState(() {
  25. if (selectId == data['Id']) {
  26. selectId = 0;
  27. } else {
  28. selectId = data['Id'];
  29. }
  30. });
  31. },
  32. child: Stack(children: <Widget>[
  33. Container(
  34. decoration: BoxDecoration(borderRadius: BorderRadius.circular(2.0)),
  35. width: width,
  36. height: width,
  37. padding: EdgeInsets.all(5),
  38. child: ClipRRect(
  39. borderRadius: BorderRadius.circular(10),
  40. child: CachedNetworkImage(
  41. imageUrl: data['ImgUrl'] == null ? "" : data['ImgUrl'],
  42. placeholder: CustomUI.buildImgLoding,
  43. fit: BoxFit.cover,
  44. ),
  45. )),
  46. Positioned(
  47. right: 0,
  48. child: Checkbox(
  49. value: data['Id'] == selectId,
  50. activeColor: Colors.blue,
  51. onChanged: (bool val) {
  52. // val 是布尔值
  53. this.setState(() {
  54. if (selectId == data['Id']) {
  55. selectId = 0;
  56. } else {
  57. selectId = data['Id'];
  58. }
  59. });
  60. },
  61. )),
  62. ]),
  63. );
  64. }
  65. @override
  66. void initState() {
  67. super.initState();
  68. for (int i = 0; i < widget.imageList.length; i++) {
  69. var element = widget.imageList[i];
  70. if (element['Type'] == PhotoType.money.index ||
  71. element['Type'] == PhotoType.destroyMoney.index) {
  72. selectId = element['Id'];
  73. }
  74. }
  75. }
  76. @override
  77. Widget build(BuildContext context) {
  78. var list = widget.imageList.map((data) {
  79. return _buildImg(data);
  80. }).toList();
  81. return Scaffold(
  82. appBar: AppBar(
  83. backgroundColor: AppColors.NewAppbarBgColor,
  84. leading: CustomUI.buildCustomLeading(context),
  85. title: Text(
  86. I18n.of(context).set_photo,
  87. style: TextStyle(color: AppColors.NewAppbarTextColor),
  88. textScaleFactor: 1.0,
  89. ),
  90. actions: <Widget>[
  91. Container(
  92. alignment: Alignment.center,
  93. child: new InkWell(
  94. child: new Padding(
  95. padding:
  96. EdgeInsets.only(right: 15, left: 15, top: 10, bottom: 10),
  97. child: new Text(I18n.of(context).determine,
  98. textScaleFactor: 1.0,
  99. style: Constants.AppBarActionTextStyle),
  100. ),
  101. onTap: () async {
  102. Map rdata = {
  103. "userId": UserData().basicInfo.userId,
  104. "Id": selectId,
  105. };
  106. rdata['sign'] = TokenMgr().getSign(rdata);
  107. Response res = await HttpUtil().post(
  108. 'user/setting/photosprice',
  109. data: rdata,
  110. isShowLoading: true);
  111. Map resData = res.data;
  112. if (resData['code'] == 0) {
  113. MessageMgr().emit('refresh_photo');
  114. Navigator.of(context).pop();
  115. }
  116. },
  117. ),
  118. )
  119. ],
  120. centerTitle: true,
  121. ),
  122. body: SafeArea(
  123. child: Container(
  124. padding: EdgeInsets.only(left: 10, top: 10, bottom: 10),
  125. height: MediaQuery.of(context).size.height,
  126. width: MediaQuery.of(context).size.width,
  127. //alignment: Alignment.center,
  128. child: SingleChildScrollView(
  129. child: Wrap(
  130. crossAxisAlignment: WrapCrossAlignment.start,
  131. children: list,
  132. ),
  133. )),
  134. ));
  135. }
  136. }