如何在Flutter中的TextField中使用多种颜色

时间:2020-11-05 14:54:13

标签: flutter

# load packages
library(gtsummary)
theme_gtsummary_compact()

# build model
mod <- lm(Petal.Width ~ Species + Petal.Length, data = iris) %>%
  tbl_regression(exponentiate = TRUE) %>%
  modify_header(update = list(
  estimate ~ '**Coefficient**',
  ci~ '**95% CI**',
  N ~ '**N**'
))

mod

在这里,我实现了对不同的字符串使用多种颜色,如果任何字符串与字符串数据类型列表匹配,则它将以橙色显示,如果任何字符串与字符串关键字列表匹配,则将显示颜色为蓝色,并且其余字符串与两个列表中的任何一个都不匹配,则它将显示为黑色。

我已经实现了此代码,但无法正常工作。

2 个答案:

答案 0 :(得分:3)

您如何使用此package
这是与包有关的示例。

enter image description here

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'RichText Controller Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(body: RichTextControllerDemo()),
    );
  }
}

class RichTextControllerDemo extends StatefulWidget {
  @override
  _RichTextControllerDemoState createState() => _RichTextControllerDemoState();
}

class _RichTextControllerDemoState extends State<RichTextControllerDemo> {
  RichTextController _controller;

  @override
  void initState() {
    _controller = RichTextController(
      {
        RegExp(
          "num|Byte|bool|byte|short|int|long|float|double|boolean|char/g",
        ): TextStyle(color: Colors.red),
        RegExp(
          "async|await|break|case|catch|class|const|continue|default|defferred|do|dynamic|else|enum|export|external/g",
        ): TextStyle(color: Colors.blue),
      },
      onMatch: (List<String> matches) {},
    );
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Center(
        child: TextField(
      controller: _controller,
    ));
  }
}



答案 1 :(得分:2)

您可以使用rich_text_controller软件包。其中有一个onMatch属性。


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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'RichText Controller Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RichTextControllerDemo(),
    );
  }
}

class RichTextControllerDemo extends StatefulWidget {
  @override
  _RichTextControllerDemoState createState() => _RichTextControllerDemoState();
}

class _RichTextControllerDemoState extends State<RichTextControllerDemo> {

// Add a controller
RichTextController _controller;

  @override
  void initState() {
      // initialize with your custom regex patterns and styles
      _controller = RichTextController({
           //
          //* Returns every Hashtag with red color
          //
          RegExp(r"\B#[a-zA-Z0-9]+\b"):TextStyle(color:Colors.red),
         // add as many expressions as you need!

         //! starting v1.1.0
         // Now you have an onMatch callback that gives you access to a List<String>
         // which contains all matched strings
         onMatch: (List<String> matches){
           // Do something with matches.
           //! P.S
           // as long as you're typing, the controller will keep updating the list.
         }
         //!
      });
    super.initState();
  }
}