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

wr98u20j  于 2023-09-28  发布在  Flutter
关注(0)|答案(2)|浏览(122)

我在开始学习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!";
}

有没有更好的方法来实现这个特性,而不用通过提供程序包向下传递参数和值?

k2arahey

k2arahey1#

我实际上也在试图解决同样的问题,但我认为提供程序包可能是正确的选择。在www.example.com上有很多很好的教程和完整的安装指南pub.dev

zd287kbt

zd287kbt2#

我发现最好的选择是GetX包:https://pub.dev/packages/get
它非常方便和易用,与EnvironmentObject非常相似

相关问题