如何在flutter中延迟导入包

abd*_*nem 6 flutter flutter-web

我有一个 flutter web 应用程序,并且我不想向所有用户提供一些小部件(视图)

我的网络应用程序内容应该显示并发送给所有用户 4 个视图,并且我的应用程序还包含管理仪表板的 20 - 25 个视图或路由

有什么方法可以在运行时按需延迟加载这个小部件吗?避免将所有页面发送给所有用户

abd*_*nem 12

我找到了解决方案,导入语句后需要添加后缀关键字deferred loading

例子:

import 'package:my_web_app/views/About.dart';

它变成:

import 'package:my_web_app/views/About.dart' deferred as about;

那么你需要调用:

await about.loadLibrary()每当您需要加载包时,此时我们的包仅被初始化,但我们不会将其注入元素树中,并且要从我们应该使用的加载器调用我们的类或小部件,Widget myLazyWidget = about.About()about加载器,About()是小部件(就我而言),现在我可以正常使用它并将其添加到小部件树中。

您可以阅读更多内容:https ://dart.dev/guides/language/language-tour#lazily-loading-a-library