static_text.dart 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import 'dart:convert';
  2. import 'dart:typed_data';
  3. import 'package:fis_lib_report/converts/alignment_convert.dart';
  4. import 'package:fis_lib_report/converts/pt_to_px_converter.dart';
  5. import 'package:fis_lib_report/converts/text_size_converter.dart';
  6. import 'package:fis_lib_report/report/static_text.dart';
  7. import 'package:fis_lib_report/report_info/report_info.dart';
  8. import 'package:fis_lib_report/report_info/static_text_info.dart';
  9. import 'package:flutter/material.dart';
  10. class RStaticText extends StatefulWidget {
  11. RStaticText(this.staticText);
  12. final StaticText staticText;
  13. @override
  14. State<StatefulWidget> createState() {
  15. return _RStaticTextState();
  16. }
  17. }
  18. class _RStaticTextState extends State<RStaticText> {
  19. _RStaticTextState();
  20. double _fontSize = 15.0;
  21. TextStyle _style = const TextStyle();
  22. Color _fontColor = Colors.black;
  23. Color _backgroundColor = const Color.fromARGB(255, 255, 255, 255);
  24. EdgeInsets _margin = const EdgeInsets.all(0);
  25. StaticTextInfo? _staticTextInfo;
  26. @override
  27. initState() {
  28. super.initState();
  29. }
  30. @override
  31. Widget build(BuildContext context) {
  32. initDatas();
  33. final text = _staticTextInfo!.text!;
  34. return Container(
  35. margin: _margin,
  36. width: widget.staticText.lineWidth! > 0
  37. ? PtToPxConverter.ptToPx(widget.staticText.lineWidth!) - 2
  38. : null,
  39. child: Text(
  40. (text),
  41. style: _style,
  42. ),
  43. );
  44. }
  45. void initDatas() {
  46. final staticTextInfo =
  47. ReportInfo.instance.getElementInfo(widget.staticText);
  48. if (staticTextInfo != null) {
  49. _staticTextInfo = staticTextInfo as StaticTextInfo;
  50. }
  51. _fontSize = widget.staticText.fontSize ?? 15.0;
  52. //TODO(Loki):常规模板暂未设置fontStyles,后续再支持
  53. //final fontStyles = staticText.fontStyles;
  54. final fontColor = widget.staticText.fontColor;
  55. if (fontColor != null) {
  56. _fontColor = Color.fromARGB(
  57. fontColor.a!, fontColor.r!, fontColor.g!, fontColor.b!);
  58. }
  59. final backgroundColor = widget.staticText.background;
  60. if (backgroundColor != null) {
  61. _backgroundColor = Color.fromARGB(backgroundColor.a!, backgroundColor.r!,
  62. backgroundColor.g!, backgroundColor.b!);
  63. }
  64. final margin = widget.staticText.margin;
  65. if (margin != null) {
  66. _margin = EdgeInsets.only(
  67. top: margin.top ?? 0,
  68. bottom: margin.bottom ?? 0,
  69. left: margin.left ?? 0,
  70. right: margin.right ?? 0);
  71. }
  72. _style = TextStyle(
  73. fontSize: PtToPxConverter.ptToPx(_fontSize),
  74. color: _fontColor,
  75. backgroundColor: _backgroundColor,
  76. );
  77. }
  78. }