当前位置: 首页 > 知识库问答 >
问题:

前端 - Flutter如何实现带有图标和文字的自定义标签?

公西星海
2024-03-31

我想自定义一个 tag, 前边展示icon 后边是文字, 放在一个横向滚动条里使用, 我是 SingleChildScrollView 嵌套 Row , 然后 这个 Tag 组件 也是用 Row 做的 但是报错必须要有大小 但是使用Container 设定宽度的话 我的 text 多少字是不确定的 请问 大佬们 应该是怎么弄?

共有1个答案

郑翰海
2024-03-31

Flutter 中实现带有图标和文字的自定义标签,并且考虑到文字长度不确定的问题,可以通过使用 Expanded widget 或者 Flexible widget 来解决。这两个 widget 都可以根据子元素的内容动态调整大小。Expanded 会按照其在 Row 或 Column 中的比例来分配空间,而 Flexible 则会根据子元素的大小动态调整。

下面是一个简单的示例,展示了如何创建一个带有图标和文字的自定义标签,并将其放在一个横向滚动条(SingleChildScrollView 嵌套 Row)中:

import 'package:flutter/material.dart';void main() {  runApp(MyApp());}class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return MaterialApp(      home: Scaffold(        appBar: AppBar(          title: Text('Custom Tag with Icon and Text'),        ),        body: Center(          child: MyCustomTags(),        ),      ),    );  }}class MyCustomTags extends StatelessWidget {  @override  Widget build(BuildContext context) {    return SingleChildScrollView(      scrollDirection: Axis.horizontal,      child: Row(        children: List.generate(          10, // 假设有10个标签          (index) => MyCustomTag(            icon: Icons.star, // 图标            text: 'Tag ${index + 1}', // 文字          ),        ),      ),    );  }}class MyCustomTag extends StatelessWidget {  final IconData icon;  final String text;  MyCustomTag({required this.icon, required this.text});  @override  Widget build(BuildContext context) {    return Padding(      padding: const EdgeInsets.all(8.0),      child: Row(        children: <Widget>[          Icon(icon),          SizedBox(width: 8.0), // 图标和文字之间的间距          Expanded( // 动态调整剩余空间以适应文字长度            child: Text(text),          ),        ],      ),    );  }}

在这个示例中,MyCustomTag 组件使用 Row 来布局图标和文字。Icon 用于显示图标,Text 用于显示文字。在 IconText 之间,我添加了一个 SizedBox 来设置图标和文字之间的间距。然后,使用 Expanded widget 来动态调整 Text 组件的大小,以适应不同长度的文字。

这样,即使文字长度不确定,MyCustomTag 组件也能根据内容动态调整大小,并且可以在 SingleChildScrollView 中正确地显示。

 类似资料:
  • 我在我的flutter应用程序中使用google_maps_flutter来使用谷歌地图我有自定义标记图标,我用BitmapDescriptor.from字节(mark erIcon)加载它,但我想用一些文本显示Url的图标。 这就是我们要达到的目的 是否可以通过flutter或任何可以动态创建图像的外部图像依赖来实现相同的效果。

  • 我是MPAndroidChart的新手,我想在LineChart的XAxis上实时显示时间。我只想显示传入数据的最后10秒,如下图所示。我的采样频率为25Hz,因此我需要显示250个值才能记录10秒。 但是,我真的不知道该怎么做。我想我必须使用IAxisValueFormatter。 目前,我的传入值被添加到数据集,如下所示: 但也许我需要这样做: 然后创建一个格式化程序,将X值转换为类似“xxx

  • 我试图获得一个带有自定义图标的JFrame,但没有任何效果。下面是我现在看到的Java 11:

  • 本文向大家介绍Android实现自定义带文字和图片Button的方法,包括了Android实现自定义带文字和图片Button的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现自定义带文字和图片Button的方法。分享给大家供大家参考。具体分析如下: 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法。 一.用系统自带的Butt

  • 我尝试在apk上更改应用程序的图标,但它没有改变。我在 https://appicon.co/ 上生成了一个图标,并尝试更改,但它显示了flutter的默认应用程序图标。

  • 嗨,我们可以在flutter中自定义标签栏宽度吗?我的标签栏宽度在这里是固定的,所以当我有长文本在我的标签栏中,它将不会显示完整,我想使我的标签栏宽度是灵活的根据内容,所以当我的文本只是短文本时,标签栏宽度将是小的,当文本是长文本时,标签栏宽度将大于短文本标签。我一直在网上搜索,但我找不到任何答案来解决我的问题。