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

Flutter Navigator跳转失效:双页面应用按钮跳转至第二页失败

嘿,我来帮你搞定Flutter页面跳转的需求!你提供的第一页代码没写完,我先帮你补全完整的实现,同时附上第二页的示例代码,这样你就能直接运行啦~

完整的第一页代码(包含跳转按钮)
import 'package:flutter/material.dart';
import './view/second_page.dart';

void main() => runApp(const MyApp());

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<StatefulWidget> createState() {
    return MainScreen();
  }
}

class MainScreen extends State<MyApp> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '页面跳转示例',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        appBar: AppBar(title: const Text('第一页')),
        body: Center(
          // 添加跳转按钮
          child: ElevatedButton(
            onPressed: () {
              // 核心跳转逻辑:跳转到第二页
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => const SecondPage()),
              );
            },
            child: const Text('跳转到第二页'),
          ),
        ),
      ),
    );
  }
}
第二页代码(view/second_page.dart)

你需要在项目的view目录下创建second_page.dart,内容如下:

import 'package:flutter/material.dart';

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('第二页'),
        // AppBar默认自带返回箭头,点击会自动回到第一页
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('这是第二页!'),
            const SizedBox(height: 20),
            // 也可以手动添加返回按钮
            ElevatedButton(
              onPressed: () {
                Navigator.pop(context); // 返回上一页
              },
              child: const Text('返回第一页'),
            ),
          ],
        ),
      ),
    );
  }
}
划重点:跳转逻辑说明
  • 用Navigator.push()来触发页面跳转,它需要两个参数:当前页面的context,以及一个MaterialPageRoute,后者通过builder指定要跳转的目标页面(这里就是SecondPage)。
  • 第二页的返回方式有两种:一是利用AppBar默认的返回箭头,二是手动调用Navigator.pop(context)来关闭当前页面回到上一页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:08:01