Flutter能否在运行时动态加载和构建小部件?

4
有没有一种方法可以将多个Dart文件存储在服务器上,并在运行时检索其中任何一个文件,以便Flutter能够从接收的文件构建特定的widget?

2
请查看此软件包 https://pub.dev/packages/dynamic_widget - Saed Nabil
这些小部件的构建时间取决于哪个因素? - Son of Stackoverflow
我不确定你是指构建时间还是解析时间,但无论哪种方式,这种技术相对较新,我没有足够的信息,希望Dart团队中的某个人能回答这个问题。 - Saed Nabil
2个回答

6

你不能动态加载dart文件或创建新类。

另一方面,widget tree是在运行时创建的,并且小部件本质上是可组合的。因此,完全可以编写一个将某些数据反序列化为widget tree的函数。

例如,我们可以将widget tree编写为xml/yaml/任何形式如下:

type: Row
children:
  - type: Container
    color: red
    child:
      - type: Text
        0: hello world

并拥有一个将其反序列化为以下内容的函数:

Row(
  children: [
    Container(
      color: Colors.red,
      child: Text('hello world'),
    ),
  ],
),

你能再详细解释一下吗? - Son of Stackoverflow
1
你还想要什么? - Rémi Rousselet
2
不行,那个方法太繁琐了。这已经超出了一个SO答案的范围。 - Rémi Rousselet
2
响应是正确的(您无法动态加载dart文件或创建新类),但建议不适当,因为这将仅适用于在编译时已定义在导入包中的小部件(与所要解决的问题完全不同)。动态加载软件包的可能性将来肯定会成为该语言的补充,至少如果他们想进入桌面操作系统世界,因为在当前状态下不可能考虑启用“插件”等应用程序。现在是针对快速、无代码、新手移动端的语言。 - ElLocoCocoLoco

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接