rt_cell.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import 'package:fis_lib_report/pages/paragraph_page.dart';
  2. import 'package:fis_lib_report/pages/rt_table.dart';
  3. import 'package:fis_lib_report/report/element_type.dart';
  4. import 'package:fis_lib_report/report/interfaces/block_element.dart';
  5. import 'package:fis_lib_report/report/paragraph.dart';
  6. import 'package:fis_lib_report/report/rt_Cell.dart';
  7. import 'package:fis_lib_report/report/rt_table.dart';
  8. import 'package:fis_ui/index.dart';
  9. import 'package:flutter/cupertino.dart';
  10. import 'package:flutter/material.dart';
  11. import 'helper.dart';
  12. class FRTCellPage extends StatefulWidget implements FWidget {
  13. final double? width;
  14. const FRTCellPage({required this.cell, this.width, Key? key})
  15. : super(key: key);
  16. final RTCell cell;
  17. @override
  18. State<StatefulWidget> createState() {
  19. return _RTCellState();
  20. }
  21. }
  22. class _RTCellState extends State<FRTCellPage> {
  23. List<IBlockElement>? _blocks = [];
  24. @override
  25. initState() {
  26. super.initState();
  27. }
  28. @override
  29. FWidget build(BuildContext context) {
  30. _blocks = widget.cell.blocks;
  31. return _blocks!.isEmpty
  32. ? FContainer(
  33. constraints: const BoxConstraints(minHeight: 24),
  34. width: widget.width,
  35. )
  36. : FWrap(
  37. alignment: WrapAlignment.center,
  38. runAlignment: WrapAlignment.center,
  39. runSpacing: 2,
  40. children: [
  41. ..._blocks!.map((e) {
  42. if (e.elementType!.name == ElementType.paragraph.name) {
  43. final paragraph = e as Paragraph;
  44. return FContainer(
  45. width: widget.width,
  46. alignment: Alignment.center,
  47. child: FParagraphPage(paragraph: paragraph),
  48. );
  49. } else if (e.elementType!.name == ElementType.rtTable.name) {
  50. final table = e as RTTable;
  51. return FSizedBox(
  52. width: widget.width,
  53. child: FRTTablePage(element: table),
  54. );
  55. }
  56. return FContainer();
  57. }),
  58. ],
  59. );
  60. }
  61. }