最好的编程实践是什么
在flatter中创建一个常量类
保存所有应用程序常量以便于参考。我知道Dart中有const
关键字用于创建常量字段,但是是否可以将静态
与const一起使用,或者在运行时会产生内存问题。
class Constants {
static const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";
}
参照https://dart.dev/guides/language/effective-dart/design
在类中分组、常量和类似枚举的类型是一种很好的做法,如下所示:
自动导入在Android Studio中非常简单,您可以在其中键入类名Color,Android Studio将能够建议自动导入Color类。
编辑
现在,flatter的不同命令行中添加了标志--dart define
,下面的答案不再适用。
相反,只要在任何地方声明常量,并可能引用其他答案。
虽然静态const
没有技术问题,但在架构上,您可能希望以不同的方式进行。
Flutter倾向于没有任何全局/静态变量,并使用继承小部件。
这意味着你可以写:
class MyConstants extends InheritedWidget {
static MyConstants of(BuildContext context) => context. dependOnInheritedWidgetOfExactType<MyConstants>();
const MyConstants({Widget child, Key key}): super(key: key, child: child);
final String successMessage = 'Some message';
@override
bool updateShouldNotify(MyConstants oldWidget) => false;
}
然后在应用的根部插入:
void main() {
runApp(
MyConstants(
child: MyApp(),
),
);
}
并用作:
@override
Widget build(BuilContext context) {
return Text(MyConstants.of(context).successMessage);
}
这比静态const
具有更多的代码,但是提供了许多优点:
但与此同时:
我的首选解决方案是制作自己的Dart库。
创建一个名为constants.dart
的新dart文件,并添加以下代码:
const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";
编辑:99%的时候你不需要用library\u name
位于文件顶部,您可能不应该(参考)
即使你漏掉这一行,你的文件仍然是库!它将被隐式命名。
然后将以下导入语句添加到需要访问常量的任何dart文件的顶部:
import 'constants.dart' as Constants;
注意如果
常数。dart
位于不同的目录中,那么您需要指定常量的路径。在导入声明中使用dart
。
编辑:在指定库前缀时,使用带有下划线的
小写字母。
在本例中:
可以使用相对路径:
import '../assets/constants.dart' as constants;
或者lib目录中的绝对路径:
import 'package:<your_app_name>/assets/constants.dart' as constants;
现在,您可以使用以下语法轻松访问常量:
String a = Constants.SUCCESS_MESSAGE;
想要改进此问题?通过编辑此帖子,更新问题,以便可以用事实和引文来回答问题。 原始关闭原因未解决 在 Flutter 中创建常量类以保留所有应用程序常量以便于参考的最佳编程实践是什么? 我知道Dart中有< code>const关键字用于创建常量字段,但是可以将< code>static与< code>const一起使用吗,还是会在运行时产生内存问题。
问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu
问题内容: 这将意味着该类已初始化,但未设置变量。 示例类: 实际的类很大,我不想为每个变量检查if(xyz == null)。 问题答案: 尝试这样的事情: 尽管检查每个变量是否可行可能会更好。
这意味着该类已初始化,但未设置变量。 示例类: 实际的类非常大,我不想检查每个变量是否(xyz==null)。
问题内容: 我看过这样的例子: 并假设我可以有一个Constants类来包装常量,并声明它们为static final。我几乎不了解Java,并且想知道这是否是创建常量的最佳方法。 问题答案: 这是完全可以接受的,甚至可能是标准。 类型是哪里,是所有大写字母的名称,下划线带有空格,并且VALUE是常量值; 我强烈建议不要将常量放在自己的类或接口中。 附带说明:声明为final且可变的变量仍然可以更
问题内容: 我有一个600万行的SQLite表。 从表中删除是很慢的。 删除表然后重新创建它似乎更快。 我正在使用它进行数据库导入。 删除表会是更好的方法还是有办法快速删除所有数据? 问题答案: 一个很大的不同是DML和DDL。对于数据库事务,这非常重要。最后的结果可能是相同的,但是这些操作有很大的不同。 如果您只是要了解性能,那么可以删除并重新创建表。如果您需要在导入中进行事务处理,则必须注意,