Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振:在构建方法之外的小部件实例变量中存储依赖项可以吗?_Flutter - Fatal编程技术网

Flutter 颤振:在构建方法之外的小部件实例变量中存储依赖项可以吗?

Flutter 颤振:在构建方法之外的小部件实例变量中存储依赖项可以吗?,flutter,Flutter,在我的flatter应用程序中,我使用get_it检索与小部件无关的依赖项(例如http服务) 我看到的大多数flatterWidget示例没有在Widget类中保存任何变量,而是在#build方法中检索它们。这对于依赖于上下文的依赖项是有意义的,但是对于不依赖于上下文的其他依赖项,调用构造函数时是否可以将它们保存为实例变量? 我不太熟悉小部件的生命周期,所以我不确定如果丢弃小部件实例,这是否会导致内存泄漏等。我想将它们保存为变量,因为它更清楚地记录了依赖关系 获取#构建 我看不出为什么不能将它

在我的flatter应用程序中,我使用
get_it
检索与小部件无关的依赖项(例如http服务)

我看到的大多数flatter
Widget
示例没有在Widget类中保存任何变量,而是在
#build
方法中检索它们。这对于依赖于
上下文的依赖项是有意义的,但是对于不依赖于
上下文的其他依赖项,调用构造函数时是否可以将它们保存为实例变量?

我不太熟悉小部件的生命周期,所以我不确定如果丢弃小部件实例,这是否会导致内存泄漏等。我想将它们保存为变量,因为它更清楚地记录了依赖关系

获取
#构建


我看不出为什么不能将它们存储为实例变量

显然,您不能以手动/干净的方式处理实例变量,必须依靠垃圾收集器来完成它应该做的事情。这可能被视为一个缺点。在您的情况下,我认为这不是一个问题,因为该服务可能贯穿应用程序的整个生命周期

如果您对内存泄漏非常紧张,请使用有状态的小部件并处理需要处理的东西


如果您非常清楚地想要记录依赖关系,您可以进一步要求它作为小部件的参数。它还将使小部件更易于测试。

我认为没有理由不能将它们存储为实例变量

显然,您不能以手动/干净的方式处理实例变量,必须依靠垃圾收集器来完成它应该做的事情。这可能被视为一个缺点。在您的情况下,我认为这不是一个问题,因为该服务可能贯穿应用程序的整个生命周期

如果您对内存泄漏非常紧张,请使用有状态的小部件并处理需要处理的东西

如果您非常清楚地想要记录依赖关系,您可以进一步要求它作为小部件的参数。它还将使小部件更易于测试

class MyWidget extends StatelessWidget {
  @override
  Widget build() {
    var myService = GetIt.instance.get<MyService>();
  }
}
class MyWidget extends StatelessWidget {
  final MyService myService;

  MyWidget(): myService = GetIt.instance.get();

  @override
  Widget build() {

  }
}