Flutter标签云插件tagtly的使用
Flutter标签云插件tagtly的使用
Tagtly for hyberlink
Flutter 包允许在 Android 和 iOS 平台上显示各种超链接,例如在输入字段或文章视图中。
该包帮助检测以下内容:
- 邮件地址。
- URL。
- 社交媒体账户标签 [Facebook, Twitter, Instagram]。
- 以
#
开头的单词 [Hashtag]。 - 日期和时间。
未来我们将添加更多功能。
使用方法
作为文本字段
您可以使用 TagtlyTextField
来装饰所有超链接。
TagtlyTextField(
decoration: const InputDecoration(
hintText: 'Type anything',
contentPadding: EdgeInsets.symmetric(horizontal: 8)),
onChanged: (String value) {
// 在这里处理文本变化
},
)
您可以在 TagtlyTextField
中添加自己的样式,就像在 TextFormField
中一样。
只读文本
如果您希望显示文本而不进行修改,则可以使用 TagtlyTextView
。
TagtlyTextView(
"Text here #welcome mnhaloka@gmail.com",
onClick: (TextObj textObj) => log(textObj.type.toString()),
)
参数 onClick(TextObj)
在用户点击超文本时被调用。它将返回包含 textContent
和 textType
的 TextObj
。您可以在回调中添加对所点击文本的操作。
TagtlyTextView 和 TagtlyTextField
该包基于正则表达式构建。
正则表达式 | 在 TagtlyTextView() 中检测 |
在 TagtlyTextField() 中检测 |
---|---|---|
URL | ✅ | ✅ |
邮件地址 | ✅ | ❌ |
Hashtag | ✅ | ✅ |
标签 [Twitter, Facebook, Instagram] | ✅ | ✅ |
日期 | ✅ | ✅ |
时间 | ✅ | ✅ |
如何在 TagtlyTextField()
中使用
正则表达式 | 显示 |
---|---|
URL | https://www.tagtly.com |
邮件地址 | example@tagtly.com |
Hashtag | #tagtly |
标签 [Twitter] | tw: @mo_nasr 或 twitter: @mo_nasr |
标签 [Facebook] | fb: @mo_nasr 或 facebook: @mo_nasr |
标签 [Instagram] | insta: @mo_nasr 或 instagram: @mo_nasr |
日期 | 21/07/2022, 21-07-2022, 21.07.2022 等格式 |
时间 | 12:50 |
如何在 TagtlyTextView()
中显示文本
正则表达式 | 显示 |
---|---|
URL | https://www.tagtly.com - 与输入相同 |
邮件地址 | example@tagtly.com - 与输入相同 |
Hashtag | #tagtly - 与输入相同 |
标签 [Twitter] | https://www.twitter.com/mo_nasr |
标签 [Facebook] | https://www.facebook.com/mo_nasr |
标签 [Instagram] | https://www.instagram.com/mo_nasr |
日期 | 21/07/2022, 21-07-2022, 21.07.2022 等格式 - 与输入相同 |
时间 | 12:50 - 与输入相同 |
如果您有任何请求或问题,请随时在 GitHub 上提问。
完整示例代码
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:tagtly/tagtly.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Tagtly Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const TagtlyApp(),
);
}
}
class TagtlyApp extends StatefulWidget {
const TagtlyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<TagtlyApp> createState() => _TagtlyAppState();
}
class _TagtlyAppState extends State<TagtlyApp> {
String text = '';
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Tagtly Demo'),
),
body: Column(
children: [
Expanded(
child: TagtlyTextField(
decoration: const InputDecoration(
hintText: 'Type anything',
contentPadding: EdgeInsets.symmetric(horizontal: 8)),
onChanged: (String value) {
text = value;
setState(() {});
},
),
),
const Text(
'Output:',
style: TextStyle(fontWeight: FontWeight.w700, fontSize: 22),
),
Expanded(
child: TagtlyTextView(
text,
onClick: (TextObj value) => log(value.type.toString()),
))
],
),
);
}
}
更多关于Flutter标签云插件tagtly的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter标签云插件tagtly的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
tagtly
是一个用于 Flutter 的标签云插件,可以帮助你在应用中创建漂亮的标签云效果。标签云通常用于展示关键词或标签,用户可以通过点击标签来执行某些操作。
以下是如何在 Flutter 项目中使用 tagtly
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 tagtly
插件的依赖:
dependencies:
flutter:
sdk: flutter
tagtly: ^0.0.1 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 tagtly
插件:
import 'package:tagtly/tagtly.dart';
3. 使用 Tagtly
组件
Tagtly
组件允许你创建标签云。你可以通过传递标签列表和自定义样式来使用它。
以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:tagtly/tagtly.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Tagtly Example'),
),
body: Center(
child: Tagtly(
tags: [
'Flutter',
'Dart',
'Mobile',
'Development',
'UI/UX',
'Widgets',
'State Management',
'Animations',
'Networking',
'Testing',
],
onTagTap: (tag) {
print('Tag tapped: $tag');
},
textStyle: TextStyle(
color: Colors.blue,
fontSize: 16,
),
tagPadding: EdgeInsets.all(8),
tagMargin: EdgeInsets.all(4),
tagDecoration: BoxDecoration(
color: Colors.blue[50],
borderRadius: BorderRadius.circular(8),
),
),
),
),
);
}
}