日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

花里胡哨,如何在 Flutter 中制作多種顏色的 TextField

來源: 責編: 時間:2024-04-19 17:28:41 226觀看
導讀TextField widget 本身并不施加任何樣式。相反,它會要求 TextEditingController 生成一個樣式化的 TextSpan 對象,即一段帶有樣式的文本。TextField 將其樣式傳遞給 TextEditingController ,默認實現只是將其放入 TextSp

TextField widget 本身并不施加任何樣式。相反,它會要求 TextEditingController 生成一個樣式化的 TextSpan 對象,即一段帶有樣式的文本。xtP28資訊網——每日最新資訊28at.com

圖片xtP28資訊網——每日最新資訊28at.com

TextField 將其樣式傳遞給 TextEditingController ,默認實現只是將其放入 TextSpan 對象中,這就是通常應用顏色的方式。xtP28資訊網——每日最新資訊28at.com

要重載該方法,請子類化 TextEditingController 并重載該方法:xtP28資訊網——每日最新資訊28at.com

class GradientTextEditingController extends TextEditingController {  @override  TextSpan buildTextSpan({    required BuildContext context,    TextStyle? style,    bool? withComposing,  }) {    style ??= const TextStyle();    final leftStyle = style.copyWith(color: Colors.red);    final rightStyle = style.copyWith(color: Colors.indigo);    final children = <TextSpan>[];    for (final char in text.characters) {      children.add(        TextSpan(          text: char,          style: TextStyle.lerp(            leftStyle,            rightStyle,            children.length / text.length,          ),        ),      );    }    return TextSpan(style: style, children: children);  }}

圖片圖片xtP28資訊網——每日最新資訊28at.com

請參閱此處的完整代碼。xtP28資訊網——每日最新資訊28at.com

https://gist.github.com/alexeyinkin/ee65ed81913c8962c2d19e28e11cb262xtP28資訊網——每日最新資訊28at.com

你可以進行更復雜的處理。例如,我們通過解析語法樹并對關鍵字、字面量、注釋等進行不同的著色,來制作代碼高亮:xtP28資訊網——每日最新資訊28at.com

圖片圖片xtP28資訊網——每日最新資訊28at.com

我們首先導入為另一個項目制作的 highlighting 和 flutter_highlighting 包:xtP28資訊網——每日最新資訊28at.com

import 'package:flutter_highlighting/themes/vs.dart';import 'package:highlighting/highlighting.dart';import 'package:highlighting/languages/java.dart';

然后我們解析文本并得到語法樹的簡單形式:xtP28資訊網——每日最新資訊28at.com

class SyntaxTextEditingController extends TextEditingController {  @override  TextSpan buildTextSpan({    required BuildContext context,    TextStyle? style,    bool? withComposing,  }) {    final highlighted = highlight.parse(text, languageId: java.id);    return TextSpan(      style: style,      children: _buildList(        nodes: highlighted.nodes,        styles: vsTheme, // Built-in theme from flutter_highlighting        ancestorStyle: style,      ),    );  }  // ...

接下來是遍歷語法樹并為每個節點返回 TextSpan :xtP28資訊網——每日最新資訊28at.com

List<TextSpan>? _buildList({    required List<Node>? nodes,    required Map<String, TextStyle> styles,    TextStyle? ancestorStyle,  }) {    return nodes        ?.map(          (node) => _buildNode(            node: node,            styles: styles,            ancestorStyle: ancestorStyle,          ),        )        .toList(growable: false);  }  TextSpan _buildNode({    required Node node,    required Map<String, TextStyle> styles,    TextStyle? ancestorStyle,  }) {    final style = styles[node.className] ?? ancestorStyle;    return TextSpan(      text: node.value,      children: _buildList(        nodes: node.children,        styles: styles,        ancestorStyle: style,      ),      style: style,    );  }

請參閱此處的完整代碼。xtP28資訊網——每日最新資訊28at.com

https://gist.github.com/alexeyinkin/bff79a057cbf04ecd5166243d06f1d44xtP28資訊網——每日最新資訊28at.com

因此,TextEditingController 類是實現各種自定義功能的大門。我們在這條路上走得更遠,并制作了一個可以做到這一點的高級代碼編輯器:xtP28資訊網——每日最新資訊28at.com

圖片圖片xtP28資訊網——每日最新資訊28at.com

如果您有興趣,請查看這里。xtP28資訊網——每日最新資訊28at.com

https://medium.com/akvelon/flutter-code-editor-19e0090a62ccxtP28資訊網——每日最新資訊28at.com

原文:https://medium.com/akvelon/how-to-make-textfield-in-multiple-colors-in-flutter-c317ae0efafextP28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-84196-0.html花里胡哨,如何在 Flutter 中制作多種顏色的 TextField

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 20款 Visual Studio 實用插件推薦

下一篇: Python編程必備:return和print的實際用途

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 临湘市| 襄城县| 政和县| 大港区| 习水县| 灌阳县| 会东县| 乐至县| 郓城县| 神池县| 荔浦县| 普宁市| 梅河口市| 郁南县| 苍溪县| 镇宁| 海伦市| 新津县| 彰化市| 平陆县| 北安市| 昌乐县| 汝南县| 武隆县| 武胜县| 西畴县| 石棉县| 开阳县| 兴国县| 句容市| 满洲里市| 唐山市| 察雅县| 淮滨县| 淮安市| 革吉县| 扎赉特旗| 光山县| 永善县| 顺平县| 新化县|