我在开始学习Flutter之前学习了SwiftUI,我不明白如何在SwiftUI中拥有类似于Environment对象的东西?
我能想到的一个解决方案是使用单例,但我不确定使用单例是否是一个好的flutter架构解决方案。
例如,在SwiftUI中,你可以像这样访问数据:
struct MyView: View {
@EnvironmentObject DataController data
var body: some View {
Text(data.title)
}
}
DataController
看起来像这样:
class DataController {
title = "Hello!"
}
另一方面,在flutter中,如果我使用singleton,它看起来像这样:
class MyWidget extends StateLessWidget {
@override
Widget build(BuildContext context) {
return Text(DataController.data.title);
}
}
flutter中的DataController
使用的是singleton
:
class DataController {
static DataController data = DataController();
title = "Hello!";
}
有没有更好的方法来实现这个特性,而不用通过提供程序包向下传递参数和值?
2条答案
按热度按时间k2arahey1#
我实际上也在试图解决同样的问题,但我认为提供程序包可能是正确的选择。在www.example.com上有很多很好的教程和完整的安装指南pub.dev
zd287kbt2#
我发现最好的选择是GetX包:https://pub.dev/packages/get
它非常方便和易用,与
EnvironmentObject
非常相似