Skip to content

[Feature] Delegate与Provider之间关系的耦合问题 #236

@cyanlink

Description

@cyanlink

首先感谢作者为我们提供如此强大的文件选择库(Flutter上其他的库都太不好用了吧!)。
但是,在我尝试避免造轮子、在本插件的基础上写逻辑的时候遇到了困难:Delegate和Provider之间是耦合的(Delegate的构造函数接受且只接受一个Provider,而一个Provider只维护了一个_currentAssets,这限定死了一对一关系)。

我要造的轮子就是模仿小红书的文件选择页面:
Screenshot_2022-01-26-16-40-09-251_com xingin xhs

这个根据Tab切换所选文件类型的功能,只是通过继承Delegate、Provider类是无法较好实现的:如果通过先全部加载,再在UI逻辑里条件筛选的方式,可能会有数据显示不全,而且影响加载更多的交互等逻辑。
一个可能的实现是,一个Tab对应一个Provider,而Provider在实例化的时候配置不同的类型。但是现有的Delegate模型不允许我这么做。

实际上,父级抽象类 AssetPickerBuilderDelegate 对provider的依赖是完全可以消除的,仅有的两个逻辑,要么可以从AssetPicker那几个静态方法从上层注入Provider,要么可以交给子类实现。
image

我们可以先讨论一下这个问题可能的解决,如果有时间我近期会提个PR!(尽量不产生Breaking changes)

Metadata

Metadata

Assignees

No one assigned

    Labels

    await investigateThe issue is waiting for further investigation.await triageThe issue is waiting for triage.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions