Как убрать первый экран с маршрута в Flutter - PullRequest
0 голосов
/ 11 апреля 2019

Я создаю экран загрузки приложения.Этот экран загрузки является первым экраном, который будет показан пользователю.Через 3 секунды страница перейдет на домашнюю страницу.все работает нормально.Но когда пользователь нажимает кнопку «Назад», снова отображается экран загрузки.

КОД ПЕРВОЙ СТРАНИЦЫ

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'),
        ),
      ),
    );
  }
}

Я пытался добавить Navigator.of(context).pop(); перед вызовом HomePage, но это не работает.Это покажет пустой черный экран.

Любые идеи ??

1 Ответ

2 голосов
/ 11 апреля 2019

Вам нужно использовать 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(),
        ),
      );
...