flutter - 如何在颤动中动态禁用工具提示?
问题描述
我可以静态禁用工具提示。但是我想在单击 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,它就不起作用。我想动态禁用它。请帮我这样做。
解决方案
我们可以像下面这样以编程方式隐藏或停用工具提示,
Future.delayed(
Duration(seconds: 2),
() {
tooltip?.deactivate();
}
);
在这里,我们可以根据您的要求设置时间。(目前,我们设置为 2 秒。)
推荐阅读
- ios - 在 Swift (iOS) 中从视频创建帧
- java - 实体类和封装混淆——如何从 main() 调用非静态方法?
- python - 如何使用 python 3.8 selenium 单击 href 按钮?
- ios - 当 iOS 使用 AppleID 登录时,如何使用浏览器捕捉 Sign in with Apple 响应?
- reactjs - React UI 没有更新,为什么?
- machine-learning - 权重和输入的点积
- php - 将数据库中的特定行加载到 html 表中
- r - R中的步进/斜坡函数
- javascript - 以对象为键的打字稿地图
- python - 在 ubuntu 上安装 python3-dev 后找不到“Python.h”