Untitled
unknown
plain_text
a year ago
9.6 kB
6
Indexable
mport 'package:app_meeyland_com/common/widgets/meeyland_widgets/base_appbar.dart';import 'package:flutter/material.dart';import 'package:html/parser.dart' as html;import 'package:html_editor_enhanced/html_editor.dart';class DescriptionFullPage extends StatefulWidget { const DescriptionFullPage( {super.key, required this.onDone, required this.initDatadd}); final Function(String) onDone; final String initData; @override State<DescriptionFullPage> createState() => _DescriptionFullPageState();}class _DescriptionFullPageState extends State<DescriptionFullPage> { final HtmlEditorController controller = HtmlEditorController(); int length = 0; bool showHint = true; @override void initState() { super.initState(); length = widget.initData.length; } String _rebuildHtmlWithTrimmedText(String originalHtml, String trimmedText) { var document = html.parse(originalHtml); var body = document.body; if (body != null) { body.text = trimmedText; } return document.outerHtml; } @override Widget build(BuildContext context) { final padding = MediaQuery.of(context).padding; return Scaffold( appBar: BaseAppBar( title: const Text( "Mô tả", style: AppTextStyles.body16M, ), actions: [ InkWell( onTap: () async { controller.toggleCodeView(); final aa = (await controller.getText()); print(aa); // widget.onDone.call(await controller.getText()); }, child: const Text( "Xong", style: TextStyle(color: AppColors.primary), ), ), ], ), body: Container( color: Colors.white, margin: const EdgeInsets.only(top: 16), child: Stack( children: [ if (length == 0) const IgnorePointer( child: Padding( padding: EdgeInsets.only(left: 16, right: 16, top: 12), child: Text( """VD: Giới thiệu các đặc điểm nổi bật của bất động sản: Các tiện ích xung quanh: gần công viên, gần trường học Thời gian đến khu vực trung tâm, tiện ích xung quanh""", style: TextStyle(color: AppColors.grey400, height: 22 / 14), ), ), ), Column( children: [ Expanded( child: Padding( padding: EdgeInsets.only(bottom: padding.bottom), child: HtmlEditor( otherOptions: const OtherOptions( height: 900, decoration: BoxDecoration()), callbacks: Callbacks( onChangeContent: (text) { var document = html.parse(text); setState(() { final document = html.parse(text); length = document.documentElement?.text.length ?? 0; }); if (length > 5000) { String trimmedText = document.documentElement?.text .substring(0, 5000) ?? ''; String updatedHtml = _rebuildHtmlWithTrimmedText( text ?? '', trimmedText); controller.setText(updatedHtml); controller.clearFocus(); } }, ), htmlToolbarOptions: const HtmlToolbarOptions( toolbarPosition: ToolbarPosition.belowEditor, //by default toolbarType: ToolbarType.nativeGrid, allowImagePicking: false, buttonBorderColor: Colors.transparent, customToolbarInsertionIndices: [], renderBorder: false, customToolbarButtons: [], buttonColor: AppColors.grey600, dropdownIconColor: Colors.white, buttonHoverColor: Colors.white, gridViewHorizontalSpacing: 16, initiallyExpanded: true, separatorWidget: SizedBox(), defaultToolbarButtons: [ FontButtons( clearAll: false, subscript: false, superscript: false, ), ListButtons(listStyles: false), ParagraphButtons( textDirection: false, lineHeight: false, caseConverter: falseffffffa s df asdf asdf asdf asdf sadf asdf asg aslndf lasdn flnasd flasdf sadf asdf asd flasdlf asdf asdfj lkasjdf lkasjdflkjasdkl fj
Editor is loading...
Leave a Comment