【发布时间】:2022-01-19 00:16:04
【问题描述】:
我想突出显示容器,例如今天是星期一,然后星期一容器应该是橙色的,其余是灰色的。
这是我的代码,我的想法每天都设置为布尔值,然后如果 bool monday 为真,那么星期一颜色将变为橙色,但现在我的问题是我不知道应该把我的判断...我们是否有更聪明的方法来满足我的需求,而不是使用 switch..
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'config.dart';
class Test extends StatefulWidget {
const Test({Key key}) : super(key: key);
@override
State<Test> createState() => _TestState();
}
class _TestState extends State<Test> {
@override
Widget build(BuildContext context) {
return Material(
child: Container(
margin: EdgeInsets.symmetric(horizontal: 24),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
dateContainer(
text: "S",
),
dateContainer(text: "M"),
dateContainer(text: "T"),
dateContainer(text: "W"),
dateContainer(text: "T"),
dateContainer(text: "F"),
dateContainer(text: "S"),
],
),
],
),
),
),
);
}
InkWell dateContainer({String text}) {
final date = DateTime.now();
final todayDate = DateFormat('EEEE').format(date);
bool isToday = false;
bool Sunday = false;
bool Monday = false;
bool Tuesday = false;
bool Wednesday = false;
bool Thursday = false;
bool Friday = false;
bool Saturday = false;
switch (todayDate) {
case 'Sunday':
setState(() {
Sunday = true;
});
break;
case 'Monday':
setState(() {
Monday = true;
});
break;
case 'Tuesday':
setState(() {
Tuesday = true;
});
break;
case 'Wednesday':
setState(() {
Wednesday = true;
});
break;
case 'Thursday':
setState(() {
Thursday = true;
});
break;
case 'Friday':
setState(() {
Sunday = true;
});
break;
case 'Saturday':
setState(() {
Saturday = true;
});
break;
}
return InkWell(
onTap: () {
print(text);
},
child: Container(
decoration: BoxDecoration(
color: isToday ? Colors.orange : Colors.black38,
borderRadius: BorderRadius.all(Radius.circular(4))),
height: 36,
width: 36,
child: Center(
child: Text(
text,
style: smallTextBoldStyle(textColor: Colors.white),
),
),
),
);
}
}
【问题讨论】:
标签: flutter