将一个 Flutter 应用程序集成到另一个 Flutter 应用程序中

问题描述 投票:0回答:3

我有一个名为 X 的较大应用程序,还有另一个名为 Y 的较小应用程序。 他们现在彼此分开,并且工作得很好。 我想将应用程序 Y 集成到 X 中。我想将 Y 的代码放在 X 项目中,但它们应该有不同的 Main,以便我可以设置不同的主题和路线。有什么办法可以做到吗?

更新

我使用 GetX 中的 GetMaterialApp 而不是 MaterialApp,它返回错误:

'package:flutter/src/widgets/framework.dart': 断言失败: 第 5334 行 pos 14: '_dependents.isEmpty': 不正确。

我该如何解决这个问题?

flutter dart
3个回答
3
投票

您可以在项目中使用多个

MaterialApp()
,组合代码/文件,就像应用程序位于另一个屏幕上一样,您将生成对其
InheritedWidget
有不同引用的应用程序,例如
Theme
Navigator
,
MediaQuery
...

 /*...*/
 MaterialApp(
 /*...*/
   home: AppXHome(),
  ),
 /*...*/

class AppXHome extends StatelessWidegt {  
 @override
 Widget build(BuildContext context) {
  return Column(
   children: <Widget>[
   Container(),
   Container(),
   MaterialApp(
   home: AppYHome(),
     ),
    ],
   ),}}

1
投票

您可以使用两个 MaterialApp 小部件来定义单独的路由, 一个用于您的 APP X,另一个用于您的 APP Y, 主要功能将保持不变,无需更改,

只需在 APP X 中为应用程序 Y 创建一条路由,并将您的应用程序 Y 代码包装在另一个 MaterialApp Widget 中,您可以在其中为应用程序 Y 定义路由。


1
投票

即使您将一个或多个应用程序集成到另一个应用程序中,整个合并后也只能有一个

main

所以需要把对方的主要逻辑移到当前的,然后再处理主题。

您可以利用此示例,其中包含三个具有自定义主题的不同应用程序

© www.soinside.com 2019 - 2024. All rights reserved.