首页 > 解决方案 > 如何在颤动中动态禁用工具提示?

问题描述

我可以静态禁用工具提示。但是我想在单击 flatbutton 时动态禁用工具提示。但是无法动态禁用,我不知道该怎么做。这是我的代码:

import 'package:flutter/material.dart';
void main(){
  runApp(MaterialApp(home: HelloWorld(),debugShowCheckedModeBanner: false,));
}
class HelloWorld extends StatefulWidget {
  @override
  _HelloWorldState createState() => _HelloWorldState();
}

class _HelloWorldState extends State<HelloWorld> {

  bool check = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SafeArea(
          child: Center(
            child: Column(children: <Widget>[
              TopToolbar(),
              FlatButton(
                child: Text("Disable Tooltip"),
                onPressed: () {
                  setState(() {
                    TopToolbar toolbar = new TopToolbar();
                    toolbar.showTooltip = false;
                  });
                },
              ),
            ]),
          ),
        ));
  }
}

class TopToolbar extends StatefulWidget {

  bool showTooltip;
  final Color backgroundColor;
  final double height;
  bool isVisible;
  TopToolbar({
    this.height = 55,
    this.isVisible = true,
    this.backgroundColor = const Color(0xFFEEEEEE),
    Key key,this.showTooltip=true,
  }) : super(key: key);
  @override
  _TopToolbarState createState() => _TopToolbarState();
}

class _TopToolbarState extends State<TopToolbar> {
  @override
  Widget build(BuildContext context) {
    if (widget.isVisible) {
      return Container(
        foregroundDecoration: BoxDecoration(
          border: Border(
            bottom: BorderSide(
              color: Colors.grey,
            ),
          ),
        ),
        margin: EdgeInsets.only(bottom: 1),
        color: widget.backgroundColor,
        height: widget.height,
        child: Stack(
          children: <Widget>[
            Positioned(
              top: 7,
              right: 60,
              height: 40,
              width: 40,
              child: RawMaterialButton(
                elevation: 0.0,
                fillColor: widget.backgroundColor,
                splashColor: Colors.grey[300],
                child: IconButton(
                  icon: Icon(
                    Icons.bookmark,
                    color: Colors.grey[500],
                    size: 25,
                  ),
                  onPressed: (){},
                  tooltip: widget.showTooltip ? "Bookmark" : null,
                ),
                onPressed: (){},
              ),
            ),
          ],
        ),
      );
    } else {
      return Container();
    }
  }
}

如果我给静态错误。它工作正常。例如:如果添加像 TopToolbar(showTooltip : false) 这样的子项,它可以正常工作,但是如果我在 Flatbutton onPressed 方法中给出 toolbar.showTooltip = false,它就不起作用。我想动态禁用它。请帮我这样做。

标签: flutterdart

解决方案


我们可以像下面这样以编程方式隐藏或停用工具提示,

Future.delayed(
  Duration(seconds: 2),
  () {
    tooltip?.deactivate();
  }
);

在这里,我们可以根据您的要求设置时间。(目前,我们设置为 2 秒。)


推荐阅读