gpt4 book ai didi

dart - Flutter Snackbar 关闭监听器

转载 作者:行者123 更新时间:2023-12-03 14:29:10 32 4
gpt4 key购买 nike

我正在寻找一种方法来检查 Snackbar已被用户或超时内容驳回。我真的无法让任何听众听到这样做。

这是我目前得到的

Scaffold.of(context)
.showSnackBar(SnackBar(content: Text("Title")))
.closed
.then((reason) {
// snackbar is now closed
});

这是一种方法,我正在寻找确切的听众。我不想做任何工作,比如设置 durationSnackbar然后在持续时间过去后听它。

最佳答案

请参阅下面的完整示例
我刚包好 SnackBar内容与 WillPopoScope如果用户按下后退按钮,它将删除 snackbar 。
默认情况下,它将指定 SnackBarClosedReason.remove原因
导入 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: FirstPage(),
),
);
}
}

class FirstPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
child: Text('go to test page'),
onPressed: () => Navigator.of(context).push(MaterialPageRoute(builder: (context) => Test())),
),
);
}
}

class Test extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
child: Text('show snack'),
onPressed: () => _showSnack(context),
),
),
);
}

void _showSnack(BuildContext context) {
ScaffoldMessenger.of(context)
.showSnackBar(
SnackBar(
content: WillPopScope(
onWillPop: () async {
ScaffoldMessenger.of(context).removeCurrentSnackBar();
return true;
},
child: Text("Title"),
),
),
)
.closed
.then((reason) {
print('------------ $reason');
});
}
}

关于dart - Flutter Snackbar 关闭监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53450046/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com