首页 > 解决方案 > 当我使用 MaterialPageRoute 时我的文本小部件没有显示

问题描述

问题 当我使用 MaterialPageRoute 时,第 2 页中的文本小部件未显示。我在这里做错了什么?

我的主页

class _MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            floatingActionButton: FloatingActionButton(
              onPressed: () {
                Navigator.push(context,
                    new MaterialPageRoute(builder: (context) => Page2()));
              },
            ),
            body: Container(
              child: Center(
                  child: Text(
                'Page 1',
                style: TextStyle(fontSize: 30.0),
              )),
            )));
  }
}

第2页(我打印“移至第1页”的消息实际上打印到屏幕上。

import 'package:flutter/material.dart';

class Page2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var black = Colors.black;
    return Scaffold(
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            Navigator.pop(context);
            print("Moved to page 1");
          },
        ),
        backgroundColor: Colors.blue,
        body: Container(
          child: Center(
            child: Text(
              'Page 2',
              style: TextStyle(
                fontSize: 2.0,
              ),
            ),
          ),
        ));
  }
}

谢谢

标签: flutterflutter-web

解决方案


尝试移除 home body 并将其放入这样的新类中

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Page1());
  }
}

class Page1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            print('a');
            Navigator.push(context,
                MaterialPageRoute(builder: (context) => Page2()));
          },
        ),
        body: Container(
          child: Center(
              child: Text(
                'Page 1',
                style: TextStyle(fontSize: 30.0),
              )),
        ));
  }
}

class Page2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var black = Colors.black;
    return Scaffold(
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            Navigator.pop(context);
            print("Moved to page 1");
          },
        ),
        backgroundColor: Colors.blue,
        body: Container(
          child: Center(
            child: Text(
              'Page 2',
              style: TextStyle(
                fontSize: 2.0,
              ),
            ),
          ),
        ));
  }
}

这是由于您传递给导航器的上下文而发生的。有关更多信息,您可以阅读 使用不包含 Navigator 的上下文请求的此 Navigator 操作


推荐阅读