Flutter — переход от одного экрана к другому

Опубликовано: 22 Февраля, 2023

Приложения Flutter могут иметь несколько экранов или страниц. Страницы — это группы функций. Пользователь перемещается между разными страницами, чтобы использовать разные функции. Такие понятия, как страницы, называются маршрутами во Flutter. Мы можем использовать Navigator.push() для перехода к новому маршруту и Navigator.pop() для перехода к предыдущему маршруту. Маршруты управляются Navigatorwidget. Навигатор управляет стеком маршрутов. Маршруты могут быть помещены в стек с помощью метода push() и извлечены из стека с помощью метода pop(). Верхний элемент в стеке — это текущий активный маршрут. Navigator — это виджет с состоянием, состоянием которого является NavigatorState. В этой статье мы увидим, как переходить с одного экрана на другой во Flutter.

Как использовать:

Класс Navigator имеет метод push для перехода к следующему экрану.

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

Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье.

Пошаговая реализация

Шаг 1. Создайте новый проект в Android Studio.

Чтобы настроить Flutter Development в Android Studio, обратитесь к разделу «Настройка Android Studio для разработки Flutter», а затем создайте новый проект в Android Studio, пожалуйста, обратитесь к разделу «Создание простого приложения во Flutter».

Шаг 2: Импорт пакета материалов

Добавление пакета материалов, который дает нам важные функции и вызывает метод runApp в основной функции, которая будет вызывать наше приложение.

import "package:flutter/material.dart";
void main() {
   runApp(RunMyApp(home: RunMyApp(),debugShowCheckedModeBanner: false,
     theme: ThemeData(primarySwatch: Colors.green),)
));
}

Шаг 3: Создайте первый экран или главный экран RunMyApp

Dart




class RunMyApp extends StatelessWidget {
  RunMyApp({super.key});
    
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Home Page"),
        ),
        body: Center(
          child: 
              
              ElevatedButton(
                  onPressed: () {
                    
                    Navigator.push(
                        context,
                        MaterialPageRoute(
                            builder: (context) =>
                                NextPage()));
                  },
                  child: Text("Goto Next Page")),        
           
        ),
        
    );
  }
}

Создал класс без сохранения состояния, потому что нет никаких изменений, которые возвращают каркас, который позволяет нам установить AppBar и тело. Тело содержит виджет Center с кнопкой Elevated Button , которая также имеет свойство onPressed . Класс Navigator имеет метод push для перехода к следующему экрану.

Шаг 4: Создайте второй экран или NextPage

Dart




class NextPage extends StatelessWidget {
    
  const NextPage({super.key});
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Next Page"),),
      body: Center(
        child: Text("GeeksForGeeks"),
      ),
    );
  }
}

Экран NextPage содержит Scaffold , который позволяет нам установить AppBar и body . Тело содержит центральный виджет, дочерним элементом которого является текст.

Окончательный код

Dart




import "package:flutter/material.dart";
  
void main() {
  runApp(MaterialApp(home: RunMyApp(),debugShowCheckedModeBanner: false,
      theme: ThemeData(primarySwatch: Colors.green),));
}
  
class RunMyApp extends StatelessWidget {
  RunMyApp({super.key});
    
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Home Page"),
        ),
        body: Center(
          child: 
              
              ElevatedButton(
                  onPressed: () {
                    
                    Navigator.push(
                        context,
                        MaterialPageRoute(
                            builder: (context) =>
                                NextPage()));
                  },
                  child: Text("Goto Next Page")),      
        ),
        
    );
  }
}
  
class NextPage extends StatelessWidget {
    
  const NextPage({super.key});
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Next Page"),),
      body: Center(
        child: Text("GeeksForGeeks"),
      ),
    );
  }
}

Выход: