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) 在用户点击超文本时被调用。它将返回包含 textContenttextTypeTextObj。您可以在回调中添加对所点击文本的操作。

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

1 回复

更多关于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),
            ),
          ),
        ),
      ),
    );
  }
}
回到顶部