GestureDetector长按事件执行代码并更新页面的问题及解决
解决GestureDetector长按触发时同时执行代码并更新页面的问题
需求:在GestureDetector的长按事件触发时,既要执行自定义代码,又要触发原有逻辑更新页面。但直接将onLongPress替换为自定义函数后,自定义代码可执行,但页面无更新。
初始代码
@override Widget build(BuildContext context) { return GestureDetector( onLongPress: onLongPressDetected, child: Scaffold( appBar: AppBar( title: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Text('Test') ] ), ), ), ), }
解决方案
通过封装一个函数,先执行自定义逻辑,再返回原本的onLongPressDetected方法,实现两者兼顾:
void Function()? test() { print("Test"); return onLongPressDetected; } @override Widget build(BuildContext context) { return GestureDetector( onLongPress: test(), child: Scaffold( appBar: AppBar( title: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Text('Test') ] ), ), ), ), }
内容的提问来源于stack exchange,提问作者Tter2023
相关产品推荐
相关产品推荐

