Flutter 中的 SwiftUI 环境对象替代方案

Kev*_*vin 5 dart flutter swiftui

我在开始学习 flutter 之前学习了 SwiftUI,但我无法理解如何在 SwiftUI 中拥有类似于环境对象的东西?

我能想到的一个解决方案是使用单例,但我不确定使用单例是否是一个好的颤振架构解决方案。

例如,在 SwiftUI 中,您将像这样访问数据:

struct MyView: View {
    @EnvironmentObject DataController data

    var body: some View {
        Text(data.title)
    } 
} 
Run Code Online (Sandbox Code Playgroud)

看起来DataController像这样:

class DataController {
    title = "Hello!"
}
Run Code Online (Sandbox Code Playgroud)

另一方面,在颤振中,如果我使用单例,它将如下所示:

class MyWidget extends StateLessWidget {
    @override
    Widget build(BuildContext context) {
        return Text(DataController.data.title);
    } 
}
Run Code Online (Sandbox Code Playgroud)

颤动中DataController使用的是singleton

class DataController {
    static DataController data = DataController();
    title = "Hello!";
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现此功能,而无需使用提供程序包将参数和值传递到小部件树中?

Kev*_*vin 0

我发现最好的选择是 GetX 包: https: //pub.dev/packages/get

非常方便好用,与EnvironmentObject