123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import 'package:fis_lib_report/converts/alignment_convert.dart';
- import 'package:fis_lib_report/pages/components/RDateTime.dart';
- import 'package:fis_lib_report/pages/components/input_text.dart';
- import 'package:fis_lib_report/pages/components/line.dart';
- import 'package:fis_lib_report/pages/components/multi_select.dart';
- import 'package:fis_lib_report/pages/components/single_select.dart';
- import 'package:fis_lib_report/pages/components/static_Text.dart';
- import 'package:fis_lib_report/report/dateTimeElement.dart';
- import 'package:fis_lib_report/report/element_type.dart';
- import 'package:fis_lib_report/report/inputText.dart';
- import 'package:fis_lib_report/report/interfaces/element.dart';
- import 'package:fis_lib_report/report/interfaces/position_layout.dart';
- import 'package:fis_lib_report/report/line.dart';
- import 'package:fis_lib_report/report/multiSelected.dart';
- import 'package:fis_lib_report/report/paragraph.dart';
- import 'package:fis_lib_report/report/singleSelected.dart';
- import 'package:fis_lib_report/report/staticText.dart';
- import 'package:flutter/material.dart';
- class ParagraphPage extends StatefulWidget {
- final Paragraph paragraph;
- ParagraphPage({Key? key, required this.paragraph}) : super(key: key);
- @override
- State<StatefulWidget> createState() {
- return _ParagraphState();
- }
- }
- class _ParagraphState extends State<ParagraphPage> {
- List<IElement>? _elements = [];
- int _itemCount = 0;
- @override
- initState() {
- _elements = widget.paragraph.elements;
- _itemCount = _elements!.length;
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- if (_itemCount == 0) {
- return const SizedBox();
- }
- final margin = widget.paragraph.margin!;
- return Container(
- margin: EdgeInsets.only(
- top: margin.top!,
- bottom: margin.bottom!,
- left: margin.left!,
- right: margin.right!,
- ),
- alignment: AlignmentConvert.verticalLayoutConvert(
- widget.paragraph.verticalAlignment),
- child: Row(
- mainAxisAlignment:
- widget.paragraph.horizontalAlignment == HorizontalLayout.Center
- ? MainAxisAlignment.center
- : MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- ..._elements!.map((element) {
- if (element.elementType!.name == ElementType.inputText!.name) {
- InputText inputText = element as InputText;
- return RInputText(
- inputText: inputText,
- );
- } else if (element.elementType!.name ==
- ElementType.staticText!.name) {
- StaticText staticText = element as StaticText;
- return RStaticText(staticText);
- } else if (element.elementType!.name ==
- ElementType.singleSelected!.name) {
- SingleSelected singleSelected = element as SingleSelected;
- return RSingleSelected(singleSelected);
- } else if (element.elementType!.name == ElementType.line!.name) {
- Line line = element as Line;
- return RLine(line);
- } else if (element.elementType!.name ==
- ElementType.dateTime!.name) {
- final dateTime = element as DateTimeElement;
- return RDateTime(dateTime);
- } else if (element.elementType!.name ==
- ElementType.multiSelected!.name) {
- final multiSelected = element as MultiSelected;
- List<String>? values = multiSelected.items;
- return SizedBox(
- width: 120,
- height: 28,
- child: TextField(
- cursorWidth: 0,
- mouseCursor: SystemMouseCursors.click,
- decoration: const InputDecoration(
- suffixIcon: Icon(Icons.arrow_drop_down),
- ),
- onTap: () {
- _showMultiSelect(values);
- },
- ),
- );
- }
- return Container(
- height: 30,
- width: 80,
- decoration: BoxDecoration(
- border: Border.all(
- width: 0.5,
- color: const Color.fromARGB(255, 83, 83, 83),
- ),
- color: Colors.grey[200]),
- child: const Text('组件占位'),
- );
- }),
- ],
- ),
- );
- }
- void _showMultiSelect(List<String>? items) async {
- // a list of selectable items
- // these items can be hard-coded or dynamically fetched from a database/API
- if (items!.isEmpty) {
- return;
- }
- final List<String>? results = await showDialog(
- context: context,
- builder: (BuildContext context) {
- return MultiSelect(items: items);
- },
- );
- }
- }
|