首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Flutter应用程序中存储外观和度量常量

在Flutter应用程序中存储外观和度量常量
EN

Stack Overflow用户
提问于 2019-01-20 17:22:50
回答 3查看 4.3K关注 0票数 7

在开发同一屏幕上涉及多个小部件的flutter应用程序时,我意识到存储一些带有外观和度量常量的结构会很有用,这些常量在屏幕上的某个小部件之外的某个地方使用,但我不确定在哪里。

例如,我有一个由8-10个文本部件组成的博客帖子部件。我希望将它们的TextStyles属性存储在一起,这样修改它们就会很容易,并且这个小部件代码也会更短。

同样的事情也可以应用于度量:宽度,填充,角半径等。

EN

回答 3

Stack Overflow用户

发布于 2019-01-20 18:52:15

通过创建具有高可重用性和可维护性的自定义组件,在减少样板代码方面

您的问题上下文。

所以你可以通过4个简单的步骤来实现这一点:

1.将应用程序目录创建为:

代码语言:javascript
运行
复制
    -\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中创建颜色常量

代码语言:javascript
运行
复制
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目录中创建一个自定义小部件,如下所示:

代码语言:javascript
运行
复制
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.将自定义小部件导入任意视图:在任意视图中,您可以像这样使用时导入自定义小部件

代码语言:javascript
运行
复制
child: CustomWidget(
       // Initialize all required parameters
       )

优势

  1. 将来当您想要更改自定义小部件或资源常量时,只需在一个位置进行更改,它将反映在所有位置。
  2. 您还可以在所有项目中使用此自定义小部件和资源常量,并通过次要的

代码使其看起来更整洁、更具可读性。

票数 15
EN

Stack Overflow用户

发布于 2020-12-10 23:25:29

最好的解决方案是创建一个外部文件,您将在其中创建一个类,然后在其中添加常量。

示例

在constant.dart中,我将创建constant类

代码语言:javascript
运行
复制
 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);
    }

使用:

代码语言:javascript
运行
复制
Column(
      children: [
          Text('Hello World' ,style: Constant.myStyle,),
          IconButton(icon: Constant.myIcon, onPressed: null),
          Divider(color: Constant.myColor,)
                ],
              ),

输出:

不要忘记导入包含常量的文件的库,在我的例子中,它将是constant.dart。

票数 3
EN

Stack Overflow用户

发布于 2020-12-03 00:24:55

尝试创建一个外部文件,并将常量放在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54275065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档