美文网首页Flutter 实战
Flutter入门(39):Flutter 组件之 Toolti

Flutter入门(39):Flutter 组件之 Toolti

作者: Maojunhao | 来源:发表于2020-10-16 14:07 被阅读0次

    1. 基本介绍

    Tooltip 是一个提示控件,用 Tooltip 包裹的控件,长按可以弹出 Tooltip 提示的 message。

    2. 示例代码

    代码下载地址。如果对你有帮助的话记得给个关注,代码会根据我的 Flutter 专题不断更新。

    3. Tooltip 属性介绍

    Tooltip 属性 | 介绍
    message | @required 提示语
    height | 不设置 child 时,Tooltip 的固有高度
    padding | ToolTip 内边距
    margin | ToolTip 外边距
    verticalOffset | 距离 child 中心点的竖直方向偏移量
    preferBelow | 设置为 false 时,会展示在 child 上方
    excludeFromSemantics | 是否使用语义标签
    decoration | 装饰
    textStyle | 字体样式,TextStyle
    waitDuration | 指针悬停多久后展示 Tooltip ,默认为 0
    showDuration | 展示时长,之后消失
    child | 子控件

    4. Tooltip 详解

    Tooltip 的使用非常简单,下边举两个例子,备注的很清晰了,就不在单独讲了。

    4.1 Text 的 Tooltip

    import 'package:flutter/material.dart';
    
    class FMToolTipVC extends StatelessWidget{
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return Scaffold(
          appBar: AppBar(title: Text("ToolTip"),),
          body: _listView(),
        );
      }
    
      ListView _listView(){
        return ListView(
          padding: EdgeInsets.all(15),
          children: [
            _text(),
          ],
        );
      }
      
      Tooltip _text(){
        return Tooltip(
          message: "我叫路飞,是要成为海贼王的男人。我叫路飞,是要成为海贼王的男人。我叫路飞,是要成为海贼王的男人。我叫路飞,是要成为海贼王的男人。我叫路飞,是要成为海贼王的男人。",
          height: 30, // 不设置 child 时,Tooltip 的固有高度
          padding: EdgeInsets.all(20), // ToolTip 内边距
          margin: EdgeInsets.all(20), // ToolTip 外边距
          verticalOffset: 100, // 距离 child 中心点的竖直方向偏移量
          preferBelow: true, // 设置为 false 时,会展示在 child 上方
          excludeFromSemantics: false, // 是否使用语义标签
          waitDuration: Duration(seconds: 1), // 指针悬停多久后展示 Tooltip ,默认为 0
          showDuration: Duration(seconds: 10), // 展示时长,之后消失
          // 字体样式
          textStyle: TextStyle(
            color: Colors.black
          ),
    
          // 装饰
          decoration: _boxDecoration(),
    
          // 子控件
          child: Text(
            "路飞",
            textAlign: TextAlign.center,
          ),
        );
      }
    
      // 装饰
      BoxDecoration _boxDecoration(){
        return BoxDecoration(
          // 边框
          border: Border.all(
            color: Colors.red,
            width: 3,
          ),
          // 边框角
          borderRadius: BorderRadius.circular(30),
          // borderRadius: BorderRadius.only(topLeft: Radius.circular(30), topRight: Radius.circular(30), bottomLeft: Radius.circular(30), bottomRight: Radius.circular(30)),
          //   color: Colors.yellow,
          // 背景图
          image: DecorationImage(
            image: NetworkImage('http://tiebapic.baidu.com/forum/w%3D580/sign=a96ca741eafaaf5184e381b7bc5594ed/7ea6a61ea8d3fd1f2643ad5d274e251f95ca5f38.jpg'),
            // centerSlice: Rect.largest,
          ),
          // 阴影
          boxShadow: [BoxShadow(color: Colors.grey, offset: Offset(10,10))],
          // 渐变色
          gradient: LinearGradient(colors: [Colors.white, Colors.yellow], begin: FractionalOffset(0, 0), end: FractionalOffset(0, 1)),
        );
      }
    }
    
    Tooltip text.gif

    4.2 Image 的 Tooltip

      ListView _listView(){
        return ListView(
          padding: EdgeInsets.all(15),
          children: [
            _text(),
            Padding(padding: EdgeInsets.all(15)),
            _imageTooltip()
          ],
        );
      }
    
      Tooltip _imageTooltip(){
        return Tooltip(
          message: "海贼王按钮",
          height: 30, // 不设置 child 时,Tooltip 的固有高度
          padding: EdgeInsets.all(20), // ToolTip 内边距
          margin: EdgeInsets.all(20), // ToolTip 外边距
          verticalOffset: 100, // 距离 child 中心点的竖直方向偏移量
          preferBelow: true, // 设置为 false 时,会展示在 child 上方
          excludeFromSemantics: false, // 是否使用语义标签
          waitDuration: Duration(seconds: 1), // 指针悬停多久后展示 Tooltip ,默认为 0
          showDuration: Duration(seconds: 10), // 展示时长,之后消失
          // 字体样式
          textStyle: TextStyle(
              color: Colors.black
          ),
          decoration: BoxDecoration(
            color: Colors.red.shade100,
          ),
    
          child: Container(
            child: _column(),
            decoration: BoxDecoration(
              border: Border.all(
                color: Colors.red,
                width: 2
              ),
              borderRadius: BorderRadius.circular(15)
            ),
          ),
        );
      }
    
      Column _column(){
        return Column(
          children: [
            Container(
              width: 100,
              height: 100,
              child: Image.network("http://tiebapic.baidu.com/forum/w%3D580/sign=a96ca741eafaaf5184e381b7bc5594ed/7ea6a61ea8d3fd1f2643ad5d274e251f95ca5f38.jpg"),
            ),
            Text("海贼王"),
          ],
        );
      }
    
    Tooltip image.gif

    5. 技术小结

    Tooltip 的使用非常简单,了解常用属性即可。

    相关文章

      网友评论

        本文标题:Flutter入门(39):Flutter 组件之 Toolti

        本文链接:https://www.haomeiwen.com/subject/euyzpktx.html