You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Flutter Element embedding嵌入第三方网站?求教程指引

Flutter Element Embedding:构建可嵌入第三方网站的Flutter应用步骤

前置要求

确保使用**Flutter 3.16+**稳定版,Element embedding是该版本后正式支持的Web新特性。


1. 创建/配置Flutter Web项目

  • 从零开始创建支持Web的项目:
    flutter create --platforms web my_embedded_widget
    
  • 已有项目需先启用Web支持:
    flutter config --enable-web
    

2. 修改Web入口文件适配嵌入

编辑web/index.html,替换默认自动启动逻辑,改为暴露全局初始化函数供外部网页调用:

<body>
  <script>
    window.initializeFlutterWidget = function(hostElementId) {
      const hostElement = document.getElementById(hostElementId);
      if (!hostElement) return;

      _flutter.loader.loadEntrypoint({
        serviceWorker: {
          serviceWorkerVersion: serviceWorkerVersion,
        },
        hostElement: hostElement, // 指定Flutter组件挂载的DOM元素
      });
    };
  </script>
  <script src="flutter.js" defer></script>
</body>

3. 编写适配嵌入场景的Flutter代码

在lib/main.dart中调整布局,避免默认全屏行为,适配宿主容器尺寸:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyEmbeddedWidget());
}

class MyEmbeddedWidget extends StatelessWidget {
  const MyEmbeddedWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ConstrainedBox(
        constraints: const BoxConstraints(maxWidth: 400, maxHeight: 600),
        child: Scaffold(
          body: Center(child: Text('我的可嵌入Flutter组件')),
        ),
      ),
    );
  }
}
  • 如需与宿主网页通信,可使用dart:js或package:js包实现双向调用,比如接收网页参数或向网页发送事件。

4. 构建生产版本

执行命令生成可部署的Web资源:

flutter build web --release

构建产物位于build/web目录下。

5. 嵌入第三方网站

  • 将build/web下的文件部署到静态服务器或CDN。
  • 在第三方网站的HTML中添加容器并初始化组件:
    <div id="flutter-widget-container" style="width: 400px; height: 600px;"></div>
    <script src="https://your-deployment-path/flutter.js"></script>
    <script>
      window.addEventListener('load', () => {
        window.initializeFlutterWidget('flutter-widget-container');
      });
    </script>
    

参考资源

  • Flutter官方文档「Element Embedding」章节(可通过Flutter官网搜索关键词获取)
  • Flutter Forward演示源码示例,可参考组件嵌入的实现细节

内容的提问来源于stack exchange,提问作者Valentin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:13:10