在开发同一屏幕上涉及多个小部件的flutter应用程序时,我意识到存储一些带有外观和度量常量的结构会很有用,这些常量在屏幕上的某个小部件之外的某个地方使用,但我不确定在哪里。
例如,我有一个由8-10个文本部件组成的博客帖子部件。我希望将它们的TextStyles属性存储在一起,这样修改它们就会很容易,并且这个小部件代码也会更短。
同样的事情也可以应用于度量:宽度,填充,角半径等。
发布于 2019-01-20 18:52:15
通过创建具有高可重用性和可维护性的自定义组件,在减少样板代码方面
您的问题上下文。
所以你可以通过4个简单的步骤来实现这一点:
1.将应用程序目录创建为:
-\resources (parent resource directory)
-\menus (store all menus list constants)
-\values
-\app_strings.dart (store all strings constants)
-\app_colors.dart (store all colors constants)
-\app_styles.dart (store all styles i.e. material dark, light, cupertino etc.)
-\app_dimens.dart (store all dimension constants)
-\components (parent component directory)
-\your_custom_widget.dart(create custom component here)
-\.....
-\views
-\your_view.dart(your view where you import custom component)
2.创建资源常量:
这是非常简单的步骤,因为您只需在相应的资源文件中添加常量。
示例-在app_colors.dart
中创建颜色常量
import 'package:flutter/material.dart';
/// App Colors Class - Resource class for storing app level color constants
class AppColors {
static const Color PRIMARY_COLOR = Color(0xFF35B4C5);
static const Color PRIMARY_COLOR_LIGHT = Color(0xFFA5CFF1);
static const Color PRIMARY_COLOR_DARK = Color(0xFF0D3656);
static const Color ACCENT_COLOR = Color(0xFFF2DA04);
}
3.创建自定义组件:
现在,在components
目录中创建一个自定义小部件,如下所示:
class CustomWidget extends StatefulWidget{
// Declare your widget parameters
final data-type your_parameter;
.....
.....
.....
// Create constant constructor
const CustomWidget(
// Initialize all your widget parameters
this.your_parameter
.....
.....
.....)
@override
_CustomWidgetState createState() => _CustomWidgetState();
}
/// CustomWidget State class
class _CustomWidgetState extends State<CustomWidget>{
// Here you should use existing widget from either material library or cupertino etc
@override
Widget build(BuildContext context) {
return ExistingBaseWidget(
// Set here all necessary parameters for customization
// For setting constansts from resources you do it like this
color : AppColors.COLOR_NAME,
radius : AppDimens.BORDER_RADIUS,
.......
);
}
}
4.将自定义小部件导入任意视图:在任意视图中,您可以像这样使用时导入自定义小部件
child: CustomWidget(
// Initialize all required parameters
)
优势
代码使其看起来更整洁、更具可读性。
发布于 2020-12-10 23:25:29
最好的解决方案是创建一个外部文件,您将在其中创建一个类,然后在其中添加常量。
示例
在constant.dart中,我将创建constant类
import 'package:flutter/material.dart';
class Constant {
static Color myColor = Colors.blue;
static Icon myIcon = Icon(Icons.search , color: Colors.red,);
static TextStyle myStyle = TextStyle(
fontSize: 17,
fontWeight: FontWeight.bold ,
color: Colors.green);
}
使用:
Column(
children: [
Text('Hello World' ,style: Constant.myStyle,),
IconButton(icon: Constant.myIcon, onPressed: null),
Divider(color: Constant.myColor,)
],
),
输出:
不要忘记导入包含常量的文件的库,在我的例子中,它将是constant.dart。
发布于 2020-12-03 00:24:55
尝试创建一个外部文件,并将常量放在那里。
https://stackoverflow.com/questions/54275065
复制相似问题