Untitled

 avatar
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