Flutter: сбой при переходе к другому файлу .dart. Возвращает черный экран

Я создал приложение для социальных сетей, и теперь я пытаюсь настроить свое приложение, добавив значки поиска, чата, и я хотел бы, чтобы значок поиска перешел к Searchстраница с существует в приложении. Я реализовал MaterialPageRoute но он просто возвращает черный экран (с тонкой зеленой рамкой).

В консоли отладки нет ошибок или журналов.

Отчет доктора флаттера

       Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel dev, 1.24.0-10.2.pre, on Microsoft Windows [Version 10.0.19041.630], locale en-GB)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[√] Android Studio (version 4.1.0)
[√] VS Code (version 1.51.1)
[√] Connected device (1 available)

• No issues found

Код виджета заголовка: прямо сейчас я пытаюсь добавить маршрут к Icon(Icons.search), икона

       import 'package:flutter/material.dart';
import 'package:findemed/pages/search.dart';


class Search extends StatefulWidget {
  @override
  __SearchState createState() => __SearchState();
}

class __SearchState extends State<Search> {
  Future<List> users;
  

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

AppBar header(context,
    {bool isAppTitle = false,
    String titleText,
    removeBackButton = false}) {
  return AppBar(
//APPBAR CODE WITH ICONS
    automaticallyImplyLeading: removeBackButton ? false : true,
    title: 
        Text(isAppTitle ? "FindeMed" : titleText),
    leading: GestureDetector(
      onTap: () {/* Write listener code here */},
      child: Icon(
        Icons.menu, // add custom icons also
      ),
    ),

    actions: <Widget>[
      Padding(
        padding: EdgeInsets.only(right: 20.0),
          child: GestureDetector(
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => Search()
                  ),
                );
              },
            child: Icon(
              Icons.search,
              size: 25.0,
            ),
          )),
      Padding(
          padding: EdgeInsets.only(right: 20.0),
          child: GestureDetector(
            onTap: () {},
            child: Icon(
              Icons.chat_bubble_outline,
              size: 20.0,
            ),
          )),
      Padding(
          padding: EdgeInsets.only(right: 20.0),
          child: GestureDetector(
            onTap: () {},
            child: Icon(Icons.notifications),
          )),
    ],
  );
}

2 ответа

Решение

Решил это.

Проблема была в stateless п stateful классы виджетов

class Search extends StatefulWidget {
  @override
  __SearchState createState() => __SearchState();
}

class __SearchState extends State<Search> {
  Future<List> users;

Проблемы с названием Search что, как мне кажется, противоречило маршрутизации к Searchстраница. Я просто изменил это на Header и он работает даже с пустым аргументом

class Header extends StatefulWidget {
  @override
  __HeaderState createState() => __HeaderState();
}

class __HeaderState extends State<Header> {
  Future<List> users;

В отличие от предложенного, маршрутизация будет работать даже без объявленного виджета, т.е.

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

Это потому, что в вашем Search виджет (просто Container виджет).

Попробуйте вернуть Scaffold вместо этого с некоторыми bodyнабор. По умолчанию черный экран является "нормальным" для пустого представления.

Другие вопросы по тегам