我希望当用户在文本字段中 Select 文本的一部分并单击 colored颜色 按钮时,只会对所选文本的那部分进行着色. 谢谢

我搜索了所有的文章,但没有找到任何结果.

推荐答案

尼玛·扬·萨拉姆, 您需要使用如下代码所示的rich_text_controller包:

  1. 首先,在您的pubspec.yaml(或任何兼容版本)中添加rich_text_controller: ^1.4.0.

import 'package:flutter/material.dart';
import 'package:rich_text_controller/rich_text_controller.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: RichTextControllerDemo(),
    );
  }
}

class RichTextControllerDemo extends StatefulWidget {
  const RichTextControllerDemo({super.key});

  @override
  State<RichTextControllerDemo> createState() => _RichTextControllerDemoState();
}

class _RichTextControllerDemoState extends State<RichTextControllerDemo> {

  RichTextController? _controller;

  @override
  void initState() {

    _controller = RichTextController(


      stringMatchMap: {
        "test": const TextStyle(color: Colors.red),
      },

      onMatch: (List<String> matches){

      }

    );
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              TextField(
                controller: _controller,
                
                onChanged: (value){
                },
              ),
              Padding(
                padding: const EdgeInsets.only(top : 20.0),
                child: InkWell(
                  child: const Text('click'),
                  onTap: (){

                  var start = _controller!.selection.start;
                  var end  = _controller!.selection.end;
                  var text = _controller!.text.substring(start,end);
                    setState(() {
                      _controller!.stringMatchMap!.addAll(
                        {
                          text : const TextStyle(color: Colors.cyan),
                        }
                      );
                    });
                  },
                ),
              )
            ],
          )),
    );
  }
}

enter image description here

编码快乐sibling ...

Flutter相关问答推荐

我可以在iOS设备上使用Ffltter实现Google Pay按钮吗?

Flutter 蜂窝-检索非基元数据类型列表

如何在扩展其他小部件时访问Ref

Android Studio中的Ffltter&;Couchbase:进程C:/Program Files/Git/bin/bash以非零退出值35结束

BlocBuilder仅生成一次,并在后续发出时停止重建

为什么在setState之后Ffltter Pageview重置为第0页

怎么才能像这样在摆动着这些曲线呢?

我想创建一个可滚动的堆叠列表项,每个项都朝向屏幕

FOR回路中的Flutter 模型

如何使 dart 函数变得通用?

如何获取flutter中gridview项目占用的高度和宽度?

Flutter记录返回类型问题

当键盘隐藏表单时该怎么办?

FutureProvider 不返回数据给 UI

更改 flutter listview 中的布局

如何在 Flutter 中测试动画图标

当我使用 Confetti Widget 时,Flutter Android 和 IOS 应用程序崩溃

有什么方法可以将 ChangeNotifier 与 ValueListenableBuilder 一起使用

避免长单词中断

在 Flutter 中将提取的 Listview.builder 与两个列表一起使用