构建

接住画面 — 客户端里一块画面都没有

作者: makemind · 2026年4月17日

到第三篇为止,客户端知道该显示什么,是 因为我们写在这里了。这次不写。

三行

final read = await client.readResource('ui://desk');
final text = read.contents.first.text!;
final screen = jsonDecode(text) as Map<String, dynamic>;
ui://desk — 546 B, 6 lines, type "page", title "Desk"
nothing about this screen is written in the client

在 Flutter 宿主里,这之后就交给 MCPUIRuntime.initialize(screen)。课程样例保持纯 Dart,好让任何人都能跑,只确认 它到了,而且它是一块画面。

缺的是什么

这个文件里没有的东西:

  • 控件树
  • 颜色、字号
  • 按钮文案
  • 哪个按钮调哪个工具

全都在服务端给的那份文档里。客户端是 把那份文档接过来交给运行时的管道。

所以服务端改了画面,客户端什么都不用做。就像服务端第四篇fontSize 从 88 改成 120 时没有重启服务端一样,这一侧也不重新构建。

546 字节

一块画面 546 字节。六行。

这个数字看着小,正是要点。搬运画面的成本小,搬运就成了默认。 如果每次都要发一版应用,那画面就该在应用里;如果只是取一份文档,那它就该在外面。

此内容需要开发者或更高等级

登录并升级您的方案即可继续阅读。

查看方案
Twitter