input_imageList.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:fis_lib_report/converts/margin_convert.dart';
  2. import 'package:fis_lib_report/converts/pt_to_px_converter.dart';
  3. import 'package:fis_lib_report/pages/helpler.dart';
  4. import 'package:fis_lib_report/report/inputImageList.dart';
  5. import 'package:flutter/cupertino.dart';
  6. import 'package:flutter/material.dart';
  7. class RInputImageList extends StatefulWidget {
  8. final InputImageList inputImageList;
  9. RInputImageList(this.inputImageList);
  10. @override
  11. State<StatefulWidget> createState() {
  12. return _RInputImageListState(inputImageList);
  13. }
  14. }
  15. class _RInputImageListState extends State<RInputImageList> {
  16. final InputImageList inputImageList;
  17. _RInputImageListState(this.inputImageList);
  18. Color _borderColor = Colors.grey;
  19. bool _isSelected = false;
  20. bool _hasImageBorder = false;
  21. @override
  22. initState() {
  23. _hasImageBorder = inputImageList.hasImageBorder!;
  24. super.initState();
  25. }
  26. @override
  27. Widget build(BuildContext context) {
  28. return MouseRegion(
  29. cursor: SystemMouseCursors.click,
  30. child: GestureDetector(
  31. onTap: () {
  32. if (_isSelected) {
  33. setState(() {
  34. _borderColor = Colors.grey;
  35. _isSelected = false;
  36. _hasImageBorder = false;
  37. });
  38. } else {
  39. setState(() {
  40. _borderColor = Color.fromARGB(255, 64, 159, 248);
  41. _isSelected = true;
  42. _hasImageBorder = true;
  43. });
  44. }
  45. },
  46. child: Container(
  47. height: PtToPxConverter.ptToPx(inputImageList.imageHeight),
  48. width: PtToPxConverter.ptToPx(
  49. inputImageList.imageWidth! * inputImageList.column!),
  50. alignment: Alignment.center,
  51. margin: MarginConvert.marginConvert(inputImageList.margin),
  52. decoration: BoxDecoration(
  53. border: _hasImageBorder
  54. ? Border.all(
  55. width: 0.5,
  56. color: _borderColor,
  57. )
  58. : null,
  59. color: Colors.transparent),
  60. child: const Text('请点击此处后选择右侧图片'),
  61. ),
  62. ),
  63. );
  64. }
  65. }