home_add_link.dart 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_svg/svg.dart';
  3. import 'package:link/view/add_link.dart';
  4. import '../utils/size_fit.dart';
  5. import '../utils/util.dart';
  6. class HomeAddLink extends StatelessWidget {
  7. bool _disable = false;
  8. double scale;
  9. GlobalKey? _addLinkkey;
  10. var socialObj;
  11. HomeAddLink(
  12. {Key? key,
  13. required this.socialObj,
  14. GlobalKey? addLinkkey,
  15. required this.scale,
  16. bool? disable})
  17. : super(key: key) {
  18. if (disable != null) {
  19. _disable = disable;
  20. }
  21. if (addLinkkey!=null){
  22. _addLinkkey = addLinkkey;
  23. }
  24. }
  25. @override
  26. Widget build(BuildContext context) {
  27. SizeFit.initialize(context);
  28. String strColor = socialObj['background_color'].substring(1, 9);
  29. int value = int.parse(strColor, radix: 16);
  30. List<BoxShadow> shadows = [];
  31. double borderWidth = 0.0;
  32. String borderColor = '#00000000';
  33. if (socialObj['border_width'] != null) {
  34. borderWidth = double.parse(socialObj['border_width']);
  35. borderColor = socialObj['border_color'];
  36. }
  37. if (socialObj['top_shadow'] != null) {
  38. String shadowColor =
  39. socialObj['top_shadow']['shadow_color'].substring(1, 9);
  40. int valueShadow = int.parse(shadowColor, radix: 16);
  41. shadows.add(BoxShadow(
  42. color: Color(valueShadow),
  43. blurRadius: double.parse(socialObj['top_shadow']['shadow_radius'])*scale,
  44. offset: Offset(double.parse(socialObj['top_shadow']['offset_x'])*scale,
  45. double.parse(socialObj['top_shadow']['offset_y'])*scale)));
  46. }
  47. if (socialObj['bottom_shadow'] != null) {
  48. String shadowColor =
  49. socialObj['bottom_shadow']['shadow_color'].substring(1, 9);
  50. int valueShadow = int.parse(shadowColor, radix: 16);
  51. shadows.add(BoxShadow(
  52. color: Color(valueShadow),
  53. blurRadius: double.parse(socialObj['bottom_shadow']['shadow_radius'])*scale,
  54. offset: Offset(double.parse(socialObj['bottom_shadow']['offset_x'])*scale,
  55. double.parse(socialObj['bottom_shadow']['offset_y'])*scale)));
  56. }
  57. Color linkColor = const Color(0xFF131314);
  58. if (socialObj['addlink_icon_color']!=null){
  59. linkColor = Util().stringToColor(socialObj['addlink_icon_color']);
  60. }
  61. return Container(
  62. width: double.parse(socialObj['width']).px*scale + borderWidth.px * 2*scale,
  63. height: double.parse(socialObj['height']).px*scale + borderWidth.px * 2*scale,
  64. margin: EdgeInsets.only(
  65. bottom: double.parse((socialObj['space_height'])).px*scale),
  66. decoration: BoxDecoration(
  67. boxShadow: shadows,
  68. border: Border.all(
  69. color: Util().stringToColor(borderColor),
  70. width: borderWidth.px*scale),
  71. borderRadius: BorderRadius.circular(
  72. double.parse(socialObj['border_radius']).px*scale + borderWidth.px*scale)),
  73. child: Container(
  74. key: _disable == false ? _addLinkkey : null,
  75. width: double.parse(socialObj['width']).px*scale,
  76. height: double.parse(socialObj['height']).px*scale,
  77. padding: EdgeInsets.only(
  78. left: double.parse(socialObj['padding_horizontal']).px*scale,
  79. right: double.parse(socialObj['padding_horizontal']).px*scale),
  80. decoration: BoxDecoration(
  81. color: Color(value),
  82. // boxShadow: shadows,
  83. borderRadius: BorderRadius.all(Radius.circular(
  84. double.parse(socialObj['border_radius']).px*scale))),
  85. child: Row(children: [
  86. SvgPicture.asset('assets/icons/link.svg',
  87. width: 24.px*scale, height: 24.px*scale,
  88. color: linkColor),
  89. SizedBox(
  90. width: 10.px*scale,
  91. ),
  92. Expanded(
  93. child: Text(
  94. '添加链接',
  95. style: TextStyle(
  96. color: Util().stringToColor(socialObj['text_color']),
  97. fontSize: double.parse(socialObj['font_size']).px*scale,
  98. fontWeight: socialObj['font_weight'] == 'bold'
  99. ? FontWeight.bold
  100. : FontWeight.normal),
  101. )),
  102. SvgPicture.asset(
  103. 'assets/icons/arrow_right.svg',
  104. width: 16.px*scale,
  105. height: 16.px*scale,
  106. color: Util().stringToColor(socialObj['arrow_color']),
  107. )
  108. ])));
  109. }
  110. }