【Flutter】基础组件【05】Icon

1. 写在前面

上篇文章中介绍了Flutter中的Row/Column组件,今天继续学习【Flutter】基础组件中的Icon组件。

Flutter

  • 基础语法合集

【Flutter】Dart中的var、final 和 const基本使用

【Flutter】Dart数据类型之num

【Flutter】Dart数据类型之String

【Flutter】Dart的数据类型list&Map(数组和字典)

【Flutter】Dart的方法与箭头函数

【Flutter】Dart的方法中的可选参数、方法作为参数传递

【Flutter】Dart中的匿名函数、闭包

【Flutter】Dart中的类和对象

【Flutter】Dart中的构造函数

【Flutter】Dart的工厂构造方法&单例对象&初始化列表

【Flutter】Dart的类方法和对象操作符

【Flutter】Dart中的继承

【Flutter】Dart中的抽象类和接口

【Flutter】Dart中的Mixins混入你知道是什么吗?

  • [基础组件合集]

【Flutter】基础组件【01】Text

【Flutter】基础组件【02】Container

【Flutter】基础组件【03】Scaffold

【Flutter】基础组件【04】Row/Column

2. Icon

A Material Design icon

Icon.png

使用 IconData 中描述的字体的字形绘制的图形图标小部件,例如 Icons 中材料的预定义 IconData。

  • 来看看一个官方的代码举例
void main() {
  runApp(
    MaterialApp(
      home: Container(
          color: Colors.white,
          child:Row(
            children:const <Widget>[
              Icon(
                Icons.favorite,
                color: Colors.pink,
                size: 24.0,
                semanticLabel: 'Text to announce in accessibility modes',
              ),
              Icon(
                Icons.audiotrack,
                color: Colors.green,
                size: 30.0,
              ),
              Icon(
                Icons.beach_access,
                color: Colors.blue,
                size: 36.0,
              ),
            ],
  )
  ),
    ),
  );
}
  • 运行效果

image.png

2.1 Icon种类

  • IconButton,用于交互式图标。
  • Icons,用于此类的可用图标列表(这个是不可以交互的图标)。
  • IconTheme,为图标提供环境配置。
  • ImageIcon,用于显示来自 AssetImages 或其他 ImageProvider 的图标。

2.2 基本属性

  • color

    • 类型:Color
    • 说明:图标颜色
  • icon

    • 类型:IconData
    • 说明:显示的图标
  • semanticLabel

    • 类型:String
    • 说明:语义标签,此标签不会显示在UI中
  • size

    • 类型:double
    • 说明:图标尺寸
  • textDirection

    • 类型:TextDirection
    • 说明:用户呈现图标的文本方向

2.3 Icon举例

下面👇这个示例展示了IconButton使用 Material icon “volume_up”来增加音量

import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

/// This is the main application widget.
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: _title,
      home: Scaffold(
        appBar: AppBar(title: const Text(_title)),
        body: const Center(
          child: MyStatefulWidget(),
        ),
      ),
    );
  }
}

double _volume = 0.0;

/// This is the stateful widget that the main application instantiates.
class MyStatefulWidget extends StatefulWidget {
  const MyStatefulWidget({Key? key}) : super(key: key);

  @override
  State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}

/// This is the private State class that goes with MyStatefulWidget.
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        IconButton(
          icon: const Icon(Icons.volume_up),
          tooltip: 'Increase volume by 10',
          onPressed: () {
            setState(() {
              _volume += 10;
            });
          },
        ),
        Text('Volume : $_volume')
      ],
    );
  }
}
  • 效果就是下面这样

image.png

Icons提供了很多的日常使用的小图标,几乎你想的到的图标,这里都有。

Icons.png

更多内容请看这👉https://api.flutter.dev/flutter/widgets/Icon-class.html

3. 写在后面

关注我,更多内容持续输出

🌹 喜欢就点个赞吧👍🌹

🌹 觉得有收获的,可以来一波 收藏+关注,以免你下次找不到我😁🌹

🌹欢迎大家留言交流,批评指正,转发请注明出处,谢谢支持!🌹

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flutter中,可以通过使用`Visibility`小部件来隐藏或显示组件。`Visibility`小部件可以控制其子组件是否可见,可以使用`visible`属性来设置是否显示子组件。 以下是一个简单的例子,展示如何在切换页面后隐藏一个组件: ```dart import 'package:flutter/material.dart'; class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { bool _showText = true; void _toggleVisibility() { setState(() { _showText = !_showText; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Visibility( visible: _showText, child: Text( 'Hello World!', style: Theme.of(context).textTheme.headline4, ), ), RaisedButton( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => SecondPage())); }, child: Text('Go to Second Page'), ) ], ), ), floatingActionButton: FloatingActionButton( onPressed: _toggleVisibility, tooltip: 'Toggle Visibility', child: Icon(Icons.visibility), ), ); } } class SecondPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Second Page'), ), body: Center( child: RaisedButton( onPressed: () { Navigator.pop(context); }, child: Text('Go back to Home Page'), ), ), ); } } ``` 在这个例子中,我们使用`Visibility`小部件来隐藏或显示文本组件。我们还添加了一个浮动操作按钮来切换文本组件的可见性。当我们切换到第二个页面时,文本组件将被隐藏,当我们返回到主页面时,文本组件将再次显示。 注意,我们在`_toggleVisibility`方法中使用`setState`来通知Flutter框架重新构建小部件树,以更新组件的状态。这是因为`Visibility`小部件的`visible`属性是一个可变状态,需要使用`setState`来更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡西Sensei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值