Flutter中如何设置SnackBarAction的水波纹颜色?
修改SnackBarAction的水波纹颜色
完全可行,这里提供两种实用方案:
方案一:局部Theme覆盖
SnackBarAction的水波纹颜色由Theme的splashColor控制,给SnackBar套一层局部Theme即可修改:
var snackBar = Theme( data: Theme.of(context).copyWith( splashColor: Colors.pink, // 设置粉色水波纹 highlightColor: Colors.pink.withOpacity(0.3), // 可选:按压时的高亮颜色 ), child: SnackBar( content: const Text("Task removed!"), duration: const Duration(seconds: 3), action: SnackBarAction( textColor: Colors.purple, label: "Desfazer", onPressed: () { setState(() { _taskList.insert(index, _lastItemRemoved); }); _saveFile(); }, ), ), ); ScaffoldMessenger.of(context).showSnackBar(snackBar);
方案二:自定义Action组件
如果想更灵活控制,直接用TextButton替代原生SnackBarAction,自行指定水波纹参数:
var snackBar = SnackBar( content: const Text("Task removed!"), duration: const Duration(seconds: 3), action: TextButton( style: TextButton.styleFrom( splashColor: Colors.pink, highlightColor: Colors.pink.withOpacity(0.3), padding: const EdgeInsets.symmetric(horizontal: 16), ), onPressed: () { setState(() { _taskList.insert(index, _lastItemRemoved); }); _saveFile(); }, child: const Text("Desfazer", style: TextStyle(color: Colors.purple)), ), ); ScaffoldMessenger.of(context).showSnackBar(snackBar);
内容的提问来源于stack exchange,提问作者pllsatierf
相关产品推荐
相关产品推荐

