【发布时间】:2020-05-16 01:15:55
【问题描述】:
大家好,我正在创建一个颤振应用程序,我需要做一个简单的 if 语句来决定 设备类型 我可以像这样在原始课程中做到这一点,它当然会正常工作
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
double font;
double categoriesFont;
double navHeight;
double navIcons;
if(DeviceInformation(context).width > 600){
font = fontTablet;
categoriesFont = categoriesTabletFont;
navHeight = navTabletHeight;
navIcons = navTabletIcons;
}else{
font = fontPhone;
categoriesFont = categoriesPhoneFont;
navHeight = navPhoneHeight;
navIcons = navPhoneIcons;
}
return Scaffold(....
但是我不想把这段代码放在我拥有的每个页面中,我想创建一个类来执行这个 if 语句,它会返回 font 、 categoriesFont 、 navHeight 和 navIcons 变量,以便我可以根据需要使用它们在其他页面中
我想做这样的事情
//this class decides device type and use its corresponding percentages
class SetDeviceType{
final context;
SetDeviceType(this.context);
double font;
double categoriesFont;
double navHeight;
double navIcons;
void deviceType(){
if(DeviceInformation(context).width > 600){
font = fontTablet;
categoriesFont = categoriesTabletFont;
navHeight = navTabletHeight;
navIcons = navTabletIcons;
}else{
font = fontPhone;
categoriesFont = categoriesPhoneFont;
navHeight = navPhoneHeight;
navIcons = navPhoneIcons;
}
}
double get responsiveFont => font;
double get responsiveCategoriesFont => categoriesFont;
double get responsiveNavHeight => navHeight;
double get responsiveNavIcons => navIcons;
}
然后我就可以做到了
DeviceType(context).font
在确定设备屏幕类型后获取字体变量并使用它,但我没有找到解决方法。
这里的主要思想是使这个 if 语句可重用并使代码更简洁。
知道我怎样才能做到这一点吗?它不必是一个类,任何可以完成工作的东西都是受欢迎的,即函数等
提前致谢。
【问题讨论】:
标签: class if-statement flutter code-reuse