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、模块跳转等能力

✅ 总结一句话

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

相关推荐
工程师老罗19 分钟前
如何在Android工程中配置NDK版本
android
未来侦察班2 小时前
一晃13年过去了,苹果的Airdrop依然很坚挺。
macos·ios·苹果vision pro
Libraeking4 小时前
破壁行动:在旧项目中丝滑嵌入 Compose(混合开发实战)
android·经验分享·android jetpack
市场部需要一个软件开发岗位4 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
JMchen1236 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
crmscs7 小时前
剪映永久解锁版/电脑版永久会员VIP/安卓SVIP手机永久版下载
android·智能手机·电脑
localbob7 小时前
杀戮尖塔 v6 MOD整合版(Slay the Spire)安卓+PC端免安装中文版分享 卡牌肉鸽神作!杀戮尖塔中文版,电脑和手机都能玩!杀戮尖塔.exe 杀戮尖塔.apk
android·杀戮尖塔apk·杀戮尖塔exe·游戏分享
机建狂魔7 小时前
手机秒变电影机:Blackmagic Camera + LUT滤镜包的专业级视频解决方案
android·拍照·摄影·lut滤镜·拍摄·摄像·录像
hudawei9967 小时前
flutter和Android动画的对比
android·flutter·动画
不会敲代码17 小时前
JavaScript 响应式布局的诞生历程:从后端渲染到前端响应式
全栈