import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/itg_worklist_table_model.dart'; class ItemDetailView extends StatelessWidget { final String title; final String value; const ItemDetailView(this.title, this.value, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ "$title:".toText12(isBold: true, color: const Color(0xff2D3238)), 6.width, (value.isEmpty ? "--" : value).toText12(color: MyColors.normalTextColor).expanded, ], ); } } class ItemDetailViewCol extends StatelessWidget { final String title; final String value; const ItemDetailViewCol(this.title, this.value, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ "$title:".toText12(isBold: true, color: const Color(0xff2BB8A6), maxLine: 2), 4.width, (value.isEmpty ? "--" : value).toText12(color: MyColors.normalTextColor, maxLine: 5), ], ); } } class ItemDetailViewGridItem extends StatelessWidget { int index; final String? title; final String? value; final String? type; final bool isNeedToShowEmptyDivider; final int maxLine; final bool showSpaceAfterLine; ItemDetailViewGridItem(this.index, this.title, this.value, {Key? key, this.isNeedToShowEmptyDivider = false, this.showSpaceAfterLine = false, this.type = "", this.maxLine = 6}) : super(key: key); @override Widget build(BuildContext context) { return Container( padding: EdgeInsets.only(left: index % 2 != 0 ? 12 : 0), decoration: BoxDecoration( color: Colors.transparent, border: Border( left: BorderSide( //MyColors.lightGreyEFColor // <--- left side color: index % 2 != 0 ? MyColors.lightGreyEFColor : Colors.transparent, width: 1.5, ), top: BorderSide( // <--- left side color: index > 1 ? MyColors.lightGreyEFColor : Colors.transparent, width: 1.5, ), ), ), child: isNeedToShowEmptyDivider ? SizedBox() : Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ title != null ? Flexible(child: "$title:".toText12Auto(isBold: true, color: const Color(0xff2BB8A6))) : Container(), 4.width, type != null ? type!.toLowerCase() == "table" ? getStringFromJSON(value!) // : Flexible(child: (value!.isEmpty ? "--" : value).toString().toText12Auto(color: MyColors.normalTextColor, maxLine: 5)) : (value!.isEmpty ? "--" : value).toString().toText12Auto(color: MyColors.normalTextColor, maxLine: maxLine) : Container(), ], ).paddingOnly(top: showSpaceAfterLine ? 16 : 0), ); } } class ItemDetailGrid extends StatelessWidget { Widget child1, child2; bool isItLast; ItemDetailGrid(this.child1, this.child2, {this.isItLast = false}); @override Widget build(BuildContext context) { return Column( mainAxisSize: MainAxisSize.min, children: [ IntrinsicHeight( child: Row( mainAxisSize: MainAxisSize.min, children: [ Expanded( flex: 1, child: Padding( padding: const EdgeInsets.symmetric(vertical: 8), child: child1, ), ), Container( width: 1, height: double.infinity, color: MyColors.lightGreyEFColor, margin: EdgeInsets.symmetric(horizontal: 8), ), Expanded( flex: 1, child: Padding( padding: const EdgeInsets.symmetric(vertical: 8), child: child2, ), ), ], ), ), if (!isItLast) 1.divider, ], ); } } Widget getStringFromJSON(String jsonString) { var body = json.decode(jsonString); ITGWorkListTableModel itgWorkListTableModel = ITGWorkListTableModel(); if (body.length != 0) { itgWorkListTableModel = ITGWorkListTableModel.fromJson(body[0][0]); return Flexible(child: (itgWorkListTableModel.textvalue).toString().toText12Auto(color: MyColors.normalTextColor)); } else { return Flexible(child: ("-").toString().toText12Auto(color: MyColors.normalTextColor)); } }