flutter文本输入框使用

news/2024/9/17 5:12:15/ 标签: flutter, TextField, Decoration, keyboardType, TextInputType

在Flutter中,实现输入框一般使用TextField,通过设置它的属性给输入框和内部文字设置不同的样式。

Flutter 输入框实现简单例子

import 'package:flutter/material.dart';class MyEditPage extends StatelessWidget {const MyEditPage({super.key});@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("My EditText"),),//body 是否延伸到底部控件extendBody: true,body: Column(children: [//Spacer创建一个可调整的空间隔,可用于调整Flex容器(如行或列)中窗口小部件之间的间距。const Spacer(),const Spacer(),Container(//通常用于给一个盒子的四边设置边距,用这个对象可以设置内边距。margin: const EdgeInsets.all(10),child: const Center(child: TextField(minLines: 1, //必须填1,输入内容才可居中,其他默认是左上对齐maxLines: 10, //最多行数,大于1即可decoration: InputDecoration(border: OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)),//圆角borderSide: BorderSide(width: 1, color: Colors.yellow)),focusedBorder: OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)),//圆角borderSide: BorderSide(width: 1, color: Colors.yellow)),enabledBorder: OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)),//圆角borderSide: BorderSide(width: 1, color: Colors.yellow)),errorBorder: OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)),//圆角borderSide: BorderSide(width: 1, color: Colors.yellow)),disabledBorder: OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)),//圆角borderSide: BorderSide(width: 1, color: Colors.yellow)),fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),),),))],),);}
}

下述代码可以抽出来: 

OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), //圆角borderSide: BorderSide(width: 1, color: Colors.yellow))

static const border = OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), //圆角borderSide: BorderSide(width: 1, color: Colors.yellow));
class MyEditPage extends StatelessWidget {const MyEditPage({super.key});static const border = OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), //圆角borderSide: BorderSide(width: 1, color: Colors.yellow));@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("My EditText"),),//body 是否延伸到底部控件extendBody: true,body: Column(children: [//Spacer创建一个可调整的空间隔,可用于调整Flex容器(如行或列)中窗口小部件之间的间距。const Spacer(),const Spacer(),Container(//通常用于给一个盒子的四边设置边距,用这个对象可以设置内边距。margin: const EdgeInsets.all(10),child: const Center(child: TextField(minLines: 1, //必须填1,输入内容才可居中,其他默认是左上对齐maxLines: 10, //最多行数,大于1即可decoration: InputDecoration(border: border,focusedBorder: border,enabledBorder: border,errorBorder: border,disabledBorder: border,fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),),),))],),);}OutlineInputBorder getBorder() {OutlineInputBorder outlineInputBorder = const OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), //圆角borderSide: BorderSide(width: 1, color: Colors.blue));return outlineInputBorder;}
}

TextField介绍

TextField 是 Material Design 文本字段。它允许用户使用硬件键盘或屏幕键盘输入文本。每当用户更改TextField 中的文本时,TextField 都会调用 onChanged 回调。如果用户完成在TextField 中的输入(例如,通过按下软键盘上的按钮),TextField 将调用 onSubmitted 回调。

  const TextField({super.key,this.controller,this.focusNode,this.undoController,this.decoration = const InputDecoration(),TextInputType? keyboardType,this.textInputAction,this.textCapitalization = TextCapitalization.none,this.style,this.strutStyle,this.textAlign = TextAlign.start,this.textAlignVertical,this.textDirection,this.readOnly = false,@Deprecated('Use `contextMenuBuilder` instead. ''This feature was deprecated after v3.3.0-0.5.pre.',)this.toolbarOptions,this.showCursor,this.autofocus = false,this.statesController,this.obscuringCharacter = '•',this.obscureText = false,this.autocorrect = true,SmartDashesType? smartDashesType,SmartQuotesType? smartQuotesType,this.enableSuggestions = true,this.maxLines = 1,this.minLines,this.expands = false,this.maxLength,this.maxLengthEnforcement,this.onChanged,this.onEditingComplete,this.onSubmitted,this.onAppPrivateCommand,this.inputFormatters,this.enabled,this.ignorePointers,this.cursorWidth = 2.0,this.cursorHeight,this.cursorRadius,this.cursorOpacityAnimates,this.cursorColor,this.cursorErrorColor,this.selectionHeightStyle = ui.BoxHeightStyle.tight,this.selectionWidthStyle = ui.BoxWidthStyle.tight,this.keyboardAppearance,this.scrollPadding = const EdgeInsets.all(20.0),this.dragStartBehavior = DragStartBehavior.start,bool? enableInteractiveSelection,this.selectionControls,this.onTap,this.onTapAlwaysCalled = false,this.onTapOutside,this.mouseCursor,this.buildCounter,this.scrollController,this.scrollPhysics,this.autofillHints = const <String>[],this.contentInsertionConfiguration,this.clipBehavior = Clip.hardEdge,this.restorationId,this.scribbleEnabled = true,this.enableIMEPersonalizedLearning = true,this.contextMenuBuilder = _defaultContextMenuBuilder,this.canRequestFocus = true,this.spellCheckConfiguration,this.magnifierConfiguration,}) 

获取TextField中信息

1.使用onChanged回调方法,将TextField当前的值保存在变量中。

class MyEditPage extends StatelessWidget {const MyEditPage({super.key});static const border = OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), //圆角borderSide: BorderSide(width: 1, color: Colors.yellow));@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("My EditText"),),//body 是否延伸到底部控件extendBody: true,body: Column(children: [//Spacer创建一个可调整的空间隔,可用于调整Flex容器(如行或列)中窗口小部件之间的间距。const Spacer(),const Spacer(),Container(//通常用于给一个盒子的四边设置边距,用这个对象可以设置内边距。margin: const EdgeInsets.all(10),child:  Center(child: TextField(onChanged: (String value) {print("value:"+value);},minLines: 1, //必须填1,输入内容才可居中,其他默认是左上对齐maxLines: 10, //最多行数,大于1即可decoration: InputDecoration(border: border,focusedBorder: border,enabledBorder: border,errorBorder: border,disabledBorder: border,fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),),),))],),);}OutlineInputBorder getBorder() {OutlineInputBorder outlineInputBorder = const OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), //圆角borderSide: BorderSide(width: 1, color: Colors.blue));return outlineInputBorder;}
}

2024-09-03 11:45:37.758  5798-5832  flutter                        I  value:1
2024-09-03 11:45:37.994  5798-5832  flutter                        I  value:11
2024-09-03 11:45:38.437  5798-5832  flutter                        I  value:115
2024-09-03 11:45:38.668  5798-5832  flutter                        I  value:1155
2024-09-03 11:45:38.867  5798-5832  flutter                        I  value:11555
2024-09-03 11:45:39.066  5798-5832  flutter                        I  value:115555

 2.TextEditingController 控制器监听和控制TextField的文本

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';class TextFieldPageState extends State {//文本框输入控制器TextEditingController controller = TextEditingController();//控制TextField焦点的获取与关闭FocusNode focusNode = FocusNode();@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("TextField 标题"),actions: <Widget>[FloatingActionButton(child: Text("Click",style: TextStyle(color: Colors.white),),onPressed: () {//获取文本输入框内容String inputText = controller.text;print("文本输入框内容是:$inputText");},)],),body: Center(child: SizedBox(width: 400,height: 110,child: Container(color: Colors.white24,padding: EdgeInsets.all(10),alignment: Alignment(0, 0),child: TextField(controller: controller,onChanged: (value) {print("onChanged:$value");},),),),),);}@overridevoid initState() {super.initState();String preText = "";//控制器,初始化的时候光标显示在文字后面controller = TextEditingController.fromValue(TextEditingValue(//用来设置初始化显示text: preText,selection: TextSelection.fromPosition(//用来设置文本的位置TextPosition(affinity: TextAffinity.downstream, offset: preText.length))));// 添加监听 当TextFeild 中内容发生变化 或者 焦点变动 都会触发回调// onChanged 当TextFeild文本发生改变时才会回调controller.addListener(() {String currentStr = controller.text;print("使用 Controller 监听 $currentStr");});}
}class TextFieldHome extends StatefulWidget {@overrideState<StatefulWidget> createState() {return TextFieldPageState();}
}

2024-09-03 14:32:20.094 23776-23959 flutter                        I  使用 Controller 监听 1
2024-09-03 14:32:20.280 23776-23959 flutter                        I  使用 Controller 监听 15
2024-09-03 14:32:20.449 23776-23959 flutter                        I  使用 Controller 监听 155

3.TextField回调onEditingComplete & onSubmitted

 onEditingComplete: () {print("onEditingComplete:" "编辑完成——>" + controller.text);}

输入123点击回车: 

2024-09-03 14:45:45.778 28502-28537 flutter                 I  onEditingComplete:编辑完成——>123

   onSubmitted: (value) {print("onSubmitted:$value");}
2024-09-03 14:45:45.779 28502-28537 flutter                   I  onSubmitted:123
2024-09-03 14:45:49.374 28502-28537 flutter                   I  onSubmitted:123
2024-09-03 14:49:16.016 28502-28537 flutter                   I  onSubmitted:123

4.TextField焦点

TextField获得焦点表示TextField被激活并且任何来自键盘的输入都会被录入到获得焦点的TextField内。

4.1自动获得焦点

  autofocus: true
   child: TextField(autofocus: true,onChanged: (String value) {print("value:" + value);},minLines: 1,//必须填1,输入内容才可居中,其他默认是左上对齐maxLines: 10,//最多行数,大于1即可decoration: InputDecoration(border: border,focusedBorder: border,enabledBorder: border,errorBorder: border,disabledBorder: border,fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),),)

 

4.2TextField自定义焦点切换

import 'package:flutter/material.dart';class MyCustomTextFieldPage extends StatelessWidget {final nodeOne = FocusNode();final nodeTwo = FocusNode();MyCustomTextFieldPage({super.key});static const border = OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), //圆角borderSide: BorderSide(width: 1, color: Colors.yellow));@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("My EditText TEST")),extendBody: true,body: Column(children: [const Spacer(),const Spacer(),Container(margin: const EdgeInsets.all(10),child: Center(child: TextField(autofocus: true,focusNode: nodeOne,minLines: 1,//必须填1,输入内容才可居中,其他默认是左上对齐maxLines: 10,//最多行数,大于1即可decoration: InputDecoration(border: border,focusedBorder: border,enabledBorder: border,errorBorder: border,disabledBorder: border,fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),)),),),const Spacer(),Container(margin: const EdgeInsets.all(10),child: Center(child: TextField(focusNode: nodeTwo,minLines: 1,//必须填1,输入内容才可居中,其他默认是左上对齐maxLines: 10,//最多行数,大于1即可decoration: InputDecoration(border: border,focusedBorder: border,enabledBorder: border,errorBorder: border,disabledBorder: border,fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),)),),),const Spacer(),const Spacer(),IconButton(onPressed: () {FocusScope.of(context).requestFocus(nodeTwo);},icon: Icon(Icons.accessible)),const Spacer(),const Spacer(),],),);}
}

上述代码实现自定义焦点切换

5.TextField键盘属性 

TextField可以定制和键盘相关的属性 (TextInputType

5.1.键盘类型

TextInputType

TextField(keyboardType: TextInputType.number)

 /// All possible enum values.static const List<TextInputType> values = <TextInputType>[text, multiline, number, phone, datetime, emailAddress, url, visiblePassword, name, streetAddress, none,];

5.2.键盘操作按钮

TextField的textInputAction可以更改键盘本身的操作按钮。

 textInputAction: TextInputAction.send,

enum TextInputAction {none,unspecified,done,go,search,send,next,previous,continueAction,join,route,emergencyCall,newline,
}

5.3文本大写

TextField可以对用户输入的文本进行大写化设置。

textCapitalization: TextCapitalization.characters

TextCapitalization.characters:所有字符都大写。 

 

 child: TextField(textCapitalization: TextCapitalization.sentences,textInputAction: TextInputAction.send,keyboardType: TextInputType.text,autofocus: true,minLines: 1,//必须填1,输入内容才可居中,其他默认是左上对齐maxLines: 10,//最多行数,大于1即可decoration: InputDecoration(border: border,focusedBorder: border,enabledBorder: border,errorBorder: border,disabledBorder: border,fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),))
enum TextCapitalization {/// Defaults to an uppercase keyboard for the first letter of each word.////// Corresponds to `InputType.TYPE_TEXT_FLAG_CAP_WORDS` on Android, and/// `UITextAutocapitalizationTypeWords` on iOS.words,/// Defaults to an uppercase keyboard for the first letter of each sentence.////// Corresponds to `InputType.TYPE_TEXT_FLAG_CAP_SENTENCES` on Android, and/// `UITextAutocapitalizationTypeSentences` on iOS.sentences,/// Defaults to an uppercase keyboard for each character.////// Corresponds to `InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS` on Android, and/// `UITextAutocapitalizationTypeAllCharacters` on iOS.characters,/// Defaults to a lowercase keyboard.none,
}

6.文本对齐

TextAlign属性设置TextField内容对齐方式

textAlign: TextAlign.center

 

enum TextAlign {left,right,center,justify,start,end,
}

7.文本样式

style属性用来更改TextField文本的样式。 例如颜色,字体大小等。

      style: TextStyle(color: Colors.blue, fontWeight: FontWeight.w800),

 

8.光标样式 

TextField可以自定义光标。 例如光标颜色,宽度和半径。

child: TextField(cursorColor: Colors.red,cursorRadius: Radius.circular(10.0),cursorWidth: 5,)

9.控制最大字符数

 maxLength: 4

设置maxLength后,TextField默认添加一个长度计数器。 

10.TextField设置最大行数

 maxLines: 10

如果只设置最大行数TextField会被撑起来。 

 

11.隐藏文本内容

 obscureText: true,

minLines: 1,
obscureText: true,
maxLines: 1

obscureText要生效的话,maxLines需要设置为1. 

12.装饰TextField 

decoration: InputDecoration(hintText: "这是提示文案")

decoration: InputDecoration(labelText: '这是LABEL文案')

13.图标

decoration: InputDecoration(icon: Icon(Icons.alarm),)decoration: InputDecoration(prefixIcon: Icon(Icons.alarm),)decoration: InputDecoration(prefix: CircularProgressIndicator(),)

14.用hintStyle修改hint样式 

hintStyle: TextStyle(fontWeight: FontWeight.w500, color: Colors.blue),

15.帮助性提示 

帮助性提示会一直显示在输入框下部

decoration: InputDecoration(icon: Icon(Icons.alarm),helperText: 'help!')

16.使用decoration: null或者InputDecoration.collapsed可以去除默认的下划线

 decoration: InputDecoration.collapsed(hintText: "")

17. 使用border给TextField设置边框

static const border = OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(10)), borderSide: BorderSide(width: 1, color: Colors.yellow));decoration: InputDecoration(border: border,focusedBorder: border,enabledBorder: border,errorBorder: border,disabledBorder: border,fillColor: Colors.white,filled: true,contentPadding: const EdgeInsets.all(5),
)


http://www.ppmy.cn/news/1522708.html

相关文章

与MySQL邂逅

MySQL安装捏~ 其实每次新学一样东西&#xff0c;安装永远是一个小坎 但是小问题啦 安装MySQL要用root账户&#xff0c;安装后普通用户也可以用捏 要安装MySQL先来看第一步&#xff01; 改bug&#xff01; Centos 卸载不要的环境 先康康有木有捏&#xff1a; mariadb就是…

不小心删除了 Android 手机上的短信?3 步流程恢复误删除的短信以及图片、视频、联系人

不小心删除了 Android 手机上的短信&#xff1f;别担心&#xff0c;Android 版奇客数据恢复工具可以帮助您通过简单的 3 步流程恢复已删除的短信以及图片、视频、联系人等。 如何在 Android 上恢复已删除的短信 不小心删除了 Android 手机上的短信&#xff1f;Android 版奇客数…

Django缓存

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django 5框…

Web3社交新经济,与 SOEX 实现无缝交易的高级安全性

出于充分的理由&#xff0c;安全性是交易中至关重要的考虑因素。每个人都应该确保自己的资金在交易时是安全的。由于 &#xff33;&#xff2f;&#xff25;&#xff38; 充当您与交易所的最佳连接&#xff0c;因此必须强调的是&#xff0c;该系统不会引发任何安全问题。 &a…

C语言程序设计(算法的概念及其表示)

一、算法的概念 一个程序应包括两个方面的内容: 对数据的描述:数据结构 对操作的描述:算法 著名计算机科学家沃思提出一个公式: 数据结构 +算法 =程序 完整的程序设计应该是: 数据结构+算法+程序设计方法+语言工具 广义地说,为解决一个问题而采取的方法和步骤…

帮招一名海康VM机器视觉工程师,工作地:苏州园区,行业:智能仓储自动化巨头,VM可以二次独立开发,岁数35岁以下,薪资18K+

工作职责&#xff1a; 能完成视觉系统的评估&#xff0c;合理的选择硬件配置&#xff0c;快速的完成软件功能开发和调试&#xff0c;并跟踪设备运转状况&#xff0c;保证设备稳定运行 能够清晰的理解客户某个站点的工艺需求&#xff0c;准确定位项目需求&#xff1b;能够根据需…

网络学习-eNSP配置VRRP

虚拟路由冗余协议(Virtual Router Redundancy Protocol&#xff0c;简称VRRP) VRRP广泛应用在边缘网络中&#xff0c;是一种路由冗余协议&#xff0c;它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱&#xff0c;允许主机使用单路由器&#xff0c;以及即使在实际…

HTTP 一、基础知识

一、概述 1、概述 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff1a; 全称超文本传输协议&#xff0c;是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。HTTP 是一种应用层协议&#xff0c;是基于 …

微知-BIOS中的XHCI模式是什么意思?(usb3.0的扩展控制器影响usb3.0速率等选项)

XHCI “eXtensible Host Controller Interface” “可扩展主机控制器接口”。 英特尔公司开发的一个USB主机控制器接口&#xff0c;主要面向USB 3.0&#xff0c;同时也支持USB 2.0及以下版本的设备。 是usb3.0的核心部分。 有他表示主机支持usb3.0 三种模式&#xff1a;Smart …

效率神器Listary,附激活码

相信很多人都在用Everything&#xff0c;但是我更钟情于Listary&#xff0c;双击Ctrl即可实现软件调用&#xff0c;支持命令、文件搜索、网络搜索&#xff0c;妥妥的增效神器&#xff0c; 软件使用 文件查找时&#xff0c;双击Ctrl调用搜索框后再双击Ctrl&#xff0c;可以打开…

全国大学生数学建模竞赛全国奖项评阅工作规范(2023年修订稿)

为了适应新的形势,更好地促进全国大学生数学建模竞赛活动的健康发展,进一步提高全国奖项评阅工作的质量和公正、公平性,根据《全国大学生数学建模竞赛章程》和竞赛活动的现状,特制订本规范。 一、评阅组的组成 第一条 全国评阅专家组(以下简称评阅组)由全国大学生数学建…

达梦数据库管理员常用SQL(一)

达梦数据库管理员常用SQL(一) 数据库基本信息数据库参数信息表空间信息日志文件信息进程和线程信息会话连接信息SQL执行信息等待事件信息事务和锁信息数据库基本信息 --查询数据库内部版本号 select id_code; select build_version from v$instance; select * from v$versi…

【游戏安全】CheatEngine基础使用——如何对不同类型的数值进行搜索?如何破解数值加密找到想修改的数值?

游戏安全 不同数值类型的搜索破解简单数值加密 不同数值类型的搜索 可以在游戏中看到很精确的物品数量&#xff0c;但是在CE中却什么都扫不到。 这是因为他的数值类型可能并不是四字节的&#xff0c;在游戏中这个数值的机制是一个慢慢增长的数值&#xff0c;所以他很有可能是…

使用 docker 部署 kvm 图形化管理工具 WebVirtMgr

文章目录 [toc]前提条件镜像构建启动 webvirtmgr创建其他 superuser配置 nginx 反向代理和域名访问绑定 kvm 宿主机local sockettcp 连接 虚拟机创建创建快照虚拟机克隆删除虚拟机 kvm 官方提供了以下这些图形化管理&#xff0c;license 这块也提示了是商业版&#xff08;Comme…

利士策分享,如何规划多彩的大学生活?

利士策分享&#xff0c;学习规划多彩的大学生活 踏入大学&#xff0c;如同开启一场充满未知与可能的旅程。 为了让这段旅程不仅充满学术的熏陶&#xff0c;还洋溢着生活的多彩与人际的和谐&#xff0c;我们需要精心规划&#xff0c;积极行动。 一、多彩规划&#xff1a;点亮大学…

SpringBoot教程(十五) | SpringBoot集成RabbitMq(消息丢失、消息重复、消息顺序、消息顺序)

SpringBoot教程&#xff08;十五&#xff09; | SpringBoot集成RabbitMq&#xff08;消息丢失、消息重复、消息顺序、消息顺序&#xff09; RabbitMQ常见问题解决方案问题一&#xff1a;消息丢失的解决方案&#xff08;1&#xff09;生成者丢失消息丢失的情景解决方案1&#xf…

点赞收藏功能该如何设计?

这周给一个小伙伴做模拟面试&#xff0c;因为他在公司的项目是一个短视频电商的项目&#xff0c;模仿的是微博。看到他简历里写了做了短视频的收藏功能&#xff0c;于是让他讲讲具体的做法是什么样子的。 结果回答的并不理想&#xff0c;答案里有不少硬伤&#xff0c;今天松哥…

【Python】CSV文件的简单使用

1.读取CSV文件 import csvpath "123.csv"with open(path) as f: # 打开csv文件csvReader csv.reader(f) # 读文件建立Reader对象listReader list(csvReader) # 将数据转换成列表print(listReader)2.写入CSV文件 import csvpath "123.csv"with ope…

uniapp小程序下载缓存服务器上的图片

1. 使用uni.downloadFile,但是注意下载图片的地址里的域名&#xff0c;需要在微信公众平台里面的downloadFile合法域名进行配置。 export default function downloadAndCacheImage(imageUrl, name) {return new Promise((resolve, reject) > {console.log("imageUrl&q…

【消息中间件】Kafka从入门到精通

1 Kafka入门 概念 架构 1.1 概述 1.1.1 初始Kafka Kafka是一个由Scala和Java语言开发的&#xff0c;经典高吞吐量的分布式消息发布和订阅系统&#xff0c;也是大数据技术领域中用作数据交换的核心组件之一。以高吞吐&#xff0c;低延迟&#xff0c;高伸缩&#xff0c;高可靠…