如何在 flutter 中延迟导入包
how to lazy import packages in flutter
我有一个 flutter web 应用程序,我不想向所有用户提供一些小部件(视图)
我的网络应用程序内容应该显示 4 个视图并发送给所有用户,我的应用程序还包含 20-25 个视图或管理仪表板的路由
有什么方法可以在运行时根据需要延迟加载此小部件?
避免将所有页面发送给所有用户
我找到了解决方案,您需要在导入语句后添加后缀关键字deferred loading
。
示例:
import 'package:my_web_app/views/About.dart';
它变成了:
import 'package:my_web_app/views/About.dart' deferred as about;
那么你需要调用:
await about.loadLibrary()
每当你需要加载包时,此时我们的包只是初始化但我们没有将它注入到元素树中,并从中调用我们的 class 或小部件从加载器我们应该使用 Widget myLazyWidget = about.About()
, about
是加载器而 About()
是小部件(在我的例子中),现在我可以正常使用它并将它添加到小部件树中。
您可以阅读更多内容:https://dart.dev/guides/language/language-tour#lazily-loading-a-library
我有一个 flutter web 应用程序,我不想向所有用户提供一些小部件(视图)
我的网络应用程序内容应该显示 4 个视图并发送给所有用户,我的应用程序还包含 20-25 个视图或管理仪表板的路由
有什么方法可以在运行时根据需要延迟加载此小部件? 避免将所有页面发送给所有用户
我找到了解决方案,您需要在导入语句后添加后缀关键字deferred loading
。
示例:
import 'package:my_web_app/views/About.dart';
它变成了:
import 'package:my_web_app/views/About.dart' deferred as about;
那么你需要调用:
await about.loadLibrary()
每当你需要加载包时,此时我们的包只是初始化但我们没有将它注入到元素树中,并从中调用我们的 class 或小部件从加载器我们应该使用 Widget myLazyWidget = about.About()
, about
是加载器而 About()
是小部件(在我的例子中),现在我可以正常使用它并将它添加到小部件树中。
您可以阅读更多内容:https://dart.dev/guides/language/language-tour#lazily-loading-a-library