【发布时间】:2021-09-26 07:54:23
【问题描述】:
我经常遇到一些情况,我想根据一些可能如下所示的条件设置Widget 的样式:
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: Home()));
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
bool condition = true;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: OutlinedButton(
style: OutlinedButton.styleFrom(
side:
BorderSide(color: condition ? Colors.blue : /** DEFAULT Color**/)),
onPressed: () => _changeColor(),
child: Text('Press')),
),
);
}
void _changeColor() => setState(() => condition = !condition);
}
上述代码无法编译,因为如果 condition 为 false,Flutter 希望我指定替代颜色。但我不想指定任何颜色,而只是使用我的Theme 设置的默认颜色,以防 条件 评估为false。这怎么可能?
我知道在要返回Widget 的情况下使用三元运算符时(例如在child: condition ? Container() : ... 之后),我们可以简单地指定SizedBox.shrink() 以使其无效。当不想指定任何样式但回退到默认行为时,我会分别做什么?
【问题讨论】:
标签: flutter styling conditional-operator