import 'dart:convert'; import 'dart:typed_data'; import 'package:fis_lib_report/converts/alignment_convert.dart'; import 'package:fis_lib_report/converts/pt_to_px_converter.dart'; import 'package:fis_lib_report/converts/text_size_converter.dart'; import 'package:fis_lib_report/report/static_text.dart'; import 'package:fis_lib_report/report_info/report_info.dart'; import 'package:fis_lib_report/report_info/static_text_info.dart'; import 'package:flutter/material.dart'; class RStaticText extends StatefulWidget { RStaticText(this.staticText); final StaticText staticText; @override State<StatefulWidget> createState() { return _RStaticTextState(); } } class _RStaticTextState extends State<RStaticText> { _RStaticTextState(); double _fontSize = 15.0; TextStyle _style = const TextStyle(); Color _fontColor = Colors.black; Color _backgroundColor = const Color.fromARGB(255, 255, 255, 255); EdgeInsets _margin = const EdgeInsets.all(0); StaticTextInfo? _staticTextInfo; @override initState() { super.initState(); } @override Widget build(BuildContext context) { initDatas(); final text = _staticTextInfo!.text!; return Container( margin: _margin, width: widget.staticText.lineWidth! > 0 ? PtToPxConverter.ptToPx(widget.staticText.lineWidth!) - 2 : null, child: Text( (text), style: _style, ), ); } void initDatas() { final staticTextInfo = ReportInfo.instance.getElementInfo(widget.staticText); if (staticTextInfo != null) { _staticTextInfo = staticTextInfo as StaticTextInfo; } _fontSize = widget.staticText.fontSize ?? 15.0; //TODO(Loki):常规模板暂未设置fontStyles,后续再支持 //final fontStyles = staticText.fontStyles; final fontColor = widget.staticText.fontColor; if (fontColor != null) { _fontColor = Color.fromARGB( fontColor.a!, fontColor.r!, fontColor.g!, fontColor.b!); } final backgroundColor = widget.staticText.background; if (backgroundColor != null) { _backgroundColor = Color.fromARGB(backgroundColor.a!, backgroundColor.r!, backgroundColor.g!, backgroundColor.b!); } final margin = widget.staticText.margin; if (margin != null) { _margin = EdgeInsets.only( top: margin.top ?? 0, bottom: margin.bottom ?? 0, left: margin.left ?? 0, right: margin.right ?? 0); } _style = TextStyle( fontSize: PtToPxConverter.ptToPx(_fontSize), color: _fontColor, backgroundColor: _backgroundColor, ); } }