作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 flutter ,并且在动画系统中有行为。
我创建了一个单选按钮,该按钮是一个圆形,单击时应填充该圆形。
我创建了一个有状态的窗口小部件类和一个状态类。
在状态类中,我构建了一个:
GestureDetector -> Container -> AnimatedSwitcher -> _animatedWidget
void _changeSelect(){
_isSelected = !_isSelected;
if(_isSelected){
setState(() {
_animatedWidget = Container(width: double.infinity,height: double.infinity,decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.black));
});
}
else{
setState(() {
_animatedWidget = Container();
});
}
}
class _RadioButtonState extends State<RadioButton> {
Widget _animatedWidget = Container();
bool _isSelected = false;
bool isSelected(){
return _isSelected;
}
void _changeSelect(){
_isSelected = !_isSelected;
if(_isSelected){
setState(() {
_animatedWidget = Container(width: double.infinity,height: double.infinity,decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.black));
});
}
else{
setState(() {
_animatedWidget = Container();
});
}
}
@override
Widget build(BuildContext context){
return GestureDetector(
onTap: _changeSelect,
child:
Container(
width: 16.0,
height: 16.0,
padding: EdgeInsets.all(2.0),
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(width: 2.0, color: Colors.black)
),
child: AnimatedSwitcher(
duration: Duration(seconds: 1),
child: _animatedWidget,
)
),
);
}
}
最佳答案
Widget _animatedWidget = Container();
bool _isSelected = false;
bool isSelected() {
return _isSelected;
}
void _changeSelect() {
_isSelected = !_isSelected;
if (_isSelected) {
setState(() {
_animatedWidget = Container(
key: ValueKey(1),
width: double.infinity,
height: double.infinity,
decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.black),
);
});
} else {
setState(() {
_animatedWidget = Container(
key: ValueKey(2),
);
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: GestureDetector(
onTap: _changeSelect,
child: Container(
width: 66.0,
height: 66.0,
padding: EdgeInsets.all(2.0),
decoration: BoxDecoration(shape: BoxShape.circle, border: Border.all(width: 2.0, color: Colors.black)),
child: AnimatedSwitcher(
duration: Duration(seconds: 1),
child: _animatedWidget,
)),
),
),
);
}
关于flutter - 没有带有AnimatedSwitcher或AnimatedOpacity的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60467397/
我正在创建一个仪表板,其中包含两个小部件、文本和两个容器的补间动画。但是,我想让这两个Container的不透明度慢慢的从不可见变为可见...所以我使用了AnimatedOpacity。但是我不知道该
我想知道为什么即使复选框不可见,我仍然可以单击或点击该复选框。它仍然在我的控制台中提供打印值。 Container( child: Row( children: [ Anima
我正在使用 AnimatedOpacity 在我的应用的各种状态之间隐藏 Stack 中的一些小部件。 例如,我有 Stack 和 ListView 和下面的动画加载指示器 (shimmer),以便在
我是一名优秀的程序员,十分优秀!