【发布时间】:2020-10-04 15:46:44
【问题描述】:
我在开始学习 Flutter 之前学习了 SwiftUI,但我无法理解如何在 SwiftUI 中拥有类似于 Environment 对象的东西?
我能想到的一个解决方案是使用单例,但我不确定使用单例是否是一个好的 Flutter 架构解决方案。
例如,在 SwiftUI 中,您可以像这样访问数据:
struct MyView: View {
@EnvironmentObject DataController data
var body: some View {
Text(data.title)
}
}
DataController 看起来像这样:
class DataController {
title = "Hello!"
}
另一方面,在颤振中,如果我使用单例,它将如下所示:
class MyWidget extends StateLessWidget {
@override
Widget build(BuildContext context) {
return Text(DataController.data.title);
}
}
而颤振中的DataController 使用的是singleton:
class DataController {
static DataController data = DataController();
title = "Hello!";
}
有没有更好的方法来实现此功能,而无需使用提供程序包将参数和值向下传递到小部件树?
【问题讨论】: