MP - List (not just list)

灵魂直击...

上代码

less 复制代码
// 你还需要 -> 获取网络list数据
Widget fetchListPage(BuildContext context) {
  return Padding(
    padding: const EdgeInsets.symmetric(horizontal: 20.0),
    child: SingleChildScrollView(
      child: Column(
        children: [
          const Text('HeroPage'),// 你还需要 替换为实际的 "HeroPage"
          ...List.generate(10, (index) { // 你还需要 替换10为实际的length
            return GestureDetector(
              onTap: (){
                // 你还需要 替换为自定义的 "Detail Page"
                Knavigator(context).magicPush(Morepush.normal, () => Text('Detail Page $index'));
              },
              child: Text('List Element $index'),
            );
          }),
        ],
      ),
    ),
  );
}
  • Navigator
typescript 复制代码
enum Morepush {
  normal,
  replace,
  removeuntil,
}

sealed class CoreNavigator {
  // push magic
  final BuildContext context;

  CoreNavigator(this.context);

  void magicPush(Morepush morepush, Widget Function() block) {
     _navigator(morepush, block());
  }

  void magicPop() {
     Navigator.pop(context);
  }

  void _navigator(Morepush morepush,Widget what) {
    switch (morepush) {
      case Morepush.normal:
      Navigator.push(context,MaterialPageRoute(builder: (context){
          return what; // push
      }));
      break;
      case Morepush.replace:
      Navigator.pushReplacement(context, MaterialPageRoute(builder: (context){
        return what; // pushReplacement
      }));
      break;
      case Morepush.removeuntil:
      Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context){
        return what; // pushAndRemoveUntil
      }), (route) => false); // 这需要注意(靓仔们,自己去去拓展,哈哈哈。。。)
    }
  }
}

// 使用 CoreNavigator
class Knavigator extends CoreNavigator {
  Knavigator(super.context);
}

优点总结

优点 描述
✅ 解耦 页面跳转行为不再与 Widget 层直接耦合
✅ 统一风格 所有跳转统一走 magicPush()
✅ 易扩展 想添加带动画、带参数、路径记录等逻辑,非常方便
✅ 提高可读性 比起写一堆 Navigator.push...,现在一行可读性强
✅ 灵活传参 支持传匿名函数(block)延迟执行 Widget 构建

✅ 推荐用于以下 - 项目:

  • 中大型项目,页面多、路由方式不统一
  • 页面跳转带有业务逻辑(埋点、权限判断)
  • 需要统一风格 & 增强可维护性
  • 后续准备支持 Web、DeepLink、模块跳转等能力

✅ 总结一句话

这是一种"可插拔、低耦合、强可维护"的页面跳转架构,推荐中大型项目采用,轻松驾驭复杂导航逻辑

相关推荐
火柴就是我2 小时前
让我们实现一个更好看的内部阴影按钮
android·flutter
开心就好20253 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
会员源码网3 小时前
类继承中父类方法被错误覆盖(如父类`final`方法被子类重写)
程序员·全栈
IVEN_5 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
开心就好20255 小时前
免 Xcode 的 iOS 开发新选择?聊聊一款更轻量的 iOS 开发 IDE kxapp 快蝎
后端·ios
Jahzo6 小时前
openclaw本地化部署体验与踩坑记录--windows
开源·全栈
砖厂小工8 小时前
用 GLM + OpenClaw 打造你的 AI PR Review Agent — 让龙虾帮你审代码
android·github
恋猫de小郭9 小时前
Apple 的 ANE 被挖掘,AI 硬件公开,宣传的 38 TOPS 居然是"数字游戏"?
前端·人工智能·ios
张拭心9 小时前
春节后,有些公司明确要求 AI 经验了
android·前端·人工智能
张拭心9 小时前
Android 17 来了!新特性介绍与适配建议
android·前端