惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
V
Visual Studio Blog
博客园 - 聂微东
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
U
Unit 42
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog

Flutter

开源了一个 Flutter 多链钱包 - V2EX # 用 GPT-5 完成 Flutter/Dart 的 LoongArch 全栈移植:从 Dart VM 到 Flutter Engine 与 eLinux - V2EX 开源一个 flutter 开发的 web3 钱包 app - V2EX kkRepo 只用 1 天就支持了 Futter / Dart / Pub 仓库私服搭建、支持代理 pub.dev、支持聚合私服和 Proxy flutter 开发的鸿蒙应用上架应用商店了 flutter 现在开发最佳的库用什么?或者有什么好用的脚手架吗? USB 摄像头求助。 flutter 引入 aar 包,运行报错,版本 3.38.9 用 Flutter 做了一个 Redis Desktop Manager flutter 生态这么差?写个 demo 两天都没调通 由于开发 flutter 然后测试是黑盒测试只会手点,开发了个插件 求助, flutter 项目混合式搭建问题 求助大神,为什么用 flutter 开发的安卓笔记软件卡顿、掉帧 写了一个 flutter 的状态管理库,大家参谋参谋。 开源一套 flutter UI 组件库,方便各位大佬快速进行跨平台开发,欢迎各位大佬 start Flutter 的学习曲线高吗?对于个人开发者来说是否值得 闲着没事开发一款网文写作应用—— Letter Studio 请教 flutter-windows 客户端白屏问题。 最简单的状态管理库 view_model 第一次写 flutter app 有个疑问 Flutter in_app_purchase 内购在 iOS 上的应用总结 另一个视角看 Flutter 的思维 招 flutter 工程师 兼职! 求推荐一个基础框架 Ubuntu 团队为什么无偿给 Flutter 写桌面多窗口功能? 请教: flutter 或 Android 更新、热更新方案 求一份 iOS 或者 Flutter 兼职 求助贴!关于 Flutter 接入 in_app_purchase 内购服务端部分二次验证的 flutter 是不是要升级所有的 widget 了? 上架 Play store 的问题...
Flutter GoRouter 如何实现 SingleTop
murmurkerman · 2024-11-26 · via Flutter

有些页面需要保持单例,比如:历史 -> 详情 -> 历史-> 详情,在返回的时候需要多次返回历史页面和详情页面,期望的场景是历史页面和详情页面都是单例,假如一个用户的路径是:

  1. 主页 -> 历史 -> 详情 -> 历史,那么路由栈应该是 主页 -> 历史。
  2. 主页 -> 历史 -> 详情 -> 历史 -> 详情,那么路由栈应该是 主页 -> 历史 -> 详情

替换 Router 实现,比如 AutoRoute 不太现实,有太多页面了,测试工作量很大。

GoRouter 本身只支持push, pushReplacement, go, replace, pop

  RouteMatchList _updateRouteMatchList(
    RouteMatchList newMatchList, {
    required RouteMatchList? baseRouteMatchList,
    required Completer<Object?>? completer,
    required NavigatingType type,
  }) {
    switch (type) {
      case NavigatingType.push:
        return baseRouteMatchList!.push(
          ImperativeRouteMatch(
            pageKey: _getUniqueValueKey(),
            completer: completer!,
            matches: newMatchList,
          ),
        );
      case NavigatingType.pushReplacement:
        final RouteMatch routeMatch = baseRouteMatchList!.last;
        return baseRouteMatchList.remove(routeMatch).push(
              ImperativeRouteMatch(
                pageKey: _getUniqueValueKey(),
                completer: completer!,
                matches: newMatchList,
              ),
            );
      case NavigatingType.replace:
        final RouteMatch routeMatch = baseRouteMatchList!.last;
        return baseRouteMatchList.remove(routeMatch).push(
              ImperativeRouteMatch(
                pageKey: routeMatch.pageKey,
                completer: completer!,
                matches: newMatchList,
              ),
            );
      case NavigatingType.go:
        return newMatchList;
      case NavigatingType.restore:
        // Still need to consider redirection.
        return baseRouteMatchList!.uri.toString() != newMatchList.uri.toString()
            ? newMatchList
            : baseRouteMatchList;
    }
  }