V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
magic3584
V2EX  ›  Flutter

搞不定了,请教个 flutter 问题

  •  
  •   magic3584 · 345 天前 · 1270 次点击
    这是一个创建于 345 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://stackoverflow.com/questions/77641032/cannot-get-widgets-property-in-build-function/77641427#77641427

    问题: 列表里每一行是个 record, 有个属性 paths 包含里多个图片名字。 点击 record 进入详情页,要展示图片。

    详情页是 Parent Widget ,展示图片的是 Child Widget 。我在 Parent 的 initState 里处理下图片,因为要拼接全部路径,需要调用 await 方法。处理完后执行 Child 里的 setPaths 方法。然后 Child 的 _state 的 build 方法使用 widget.paths 展示图片。

    现在的问题是:由于有个 await 方法,Child 的 build 方法执行总要先于 Parent 的 setPaths ,而且 setPaths 后也不会重新 build 。

    这个做完准备先发一版,结果卡这两天了。。。

    2 条回复    2023-12-13 06:54:39 +08:00
    gzlock
        1
    gzlock  
       345 天前   ❤️ 1
    child 先用个 loading widget 顶着
    parent 处理好图片后再改用真正的 child 显示
    你的 parent 都是 StatefulWidget 了,这种判断不是很容易么
    magic3584
        2
    magic3584  
    OP
       345 天前
    @gzlock #1
    感谢大佬,按照您说的可以了。

    主要之前都是在 Parent 里直接 实例化 Child _child = Child(), 然后在 initState 里去给 child 赋值 _child.prop = blabla 。

    正常如果直接赋值的话,child 的 build 是能拿到值的,只不过这次有个异步的操作有了一点延迟所以导致拿不到值,关键我还无法在外部去刷新 child 的 _state 。 用上了 GlobalKey 也不行(也可能是我代码有问题)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2739 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:03 · PVG 20:03 · LAX 04:03 · JFK 07:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.