Flutter:隐式动画完成前保留文本旧值的实现方法
实现方案
最简单的做法是单独维护一个存储旧文本的变量,在触发文本切换时先把当前文本存入这个变量,再更新目标文本。这样动画执行期间,AnimatedOpacity的子组件就能始终显示切换前的旧文本,直到淡出动画结束。
修改后的代码示例:
// 添加变量保存旧文本 String _oldText = ''; // 文本切换逻辑 void _switchText() { // 先留存当前文本 _oldText = _text; setState(() { _text = 'hide text'; }); } // 更新AnimatedOpacity组件 AnimatedOpacity( duration: Duration(seconds: 1), opacity: _text == 'hide text' ? 0 : 1, // 淡出阶段显示旧文本,其他情况显示当前文本 child: Text(_text == 'hide text' ? _oldText : _text), )
如果需要在动画结束后清理旧文本变量,可以给动画添加状态监听器,在动画完成后重置_oldText,但如果只是满足淡出期间显示旧文本的需求,上面的基础实现就足够简洁有效。
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

