如何从Flutter的路线中删除第一个屏幕?

问题描述 投票:0回答:1

我正在为应用创建加载屏幕。此加载屏幕是向用户显示的第一个屏幕。 3秒后,页面将导航到HomePage。一切都很好。但是当用户点击按钮时,将再次显示加载屏幕。

第一页代码

import 'dart:async';
import 'package:flutter/material.dart';
import 'home_page.dart';

void main() {
  runApp(MaterialApp(
    home: MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    Future.delayed(
        Duration(
          seconds: 3,
        ), () {
      // Navigator.of(context).pop(); // THIS IS NOT WORKING
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => HomePage(),
        ),
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: FlutterLogo(
          size: 400,
        ),
      ),
    );
  }
}

主页代码

import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text('HomePage'),
        ),
      ),
    );
  }
}

我试着在调用HomePage之前添加Navigator.of(context).pop();,但这不起作用。这将显示一个空白的黑屏。

有任何想法吗??

flutter materialpageroute
1个回答
2
投票

您需要使用pushReplacement而不仅仅是push方法。你可以从这里读到它:https://docs.flutter.io/flutter/widgets/Navigator/pushReplacement.html

并解决您的问题只需按照下面的解释。只需替换您的代码:

Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => HomePage(),
        ),
      );

有了这个:

Navigator. pushReplacement(
        context,
        MaterialPageRoute(
          builder: (context) => HomePage(),
        ),
      );
© www.soinside.com 2019 - 2024. All rights reserved.