请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师视频里的MaterialApp之间路由时,为什么Pop 是黑色呢,具体啥原因

老师视频里的MaterialApp之间路由时,为什么Pop 是黑色呢,具体啥原因

正在回答

1回答

最初PluginUse页面之所以pop时出现黑屏是由于下面的代码导致的:

import 'package:flutter/material.dart';
import 'package:flutter_color_plugin/flutter_color_plugin.dart';

///如何使用Flutter包和插件?
class PluginUse extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '如何使用Flutter包和插件?',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
class MyHomePage extends StatefulWidget {

  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('如何使用Flutter包和插件?'),
        leading: GestureDetector(
          onTap: () {
            Navigator.pop(context);
          },
          child: Icon(Icons.arrow_back),
        ),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
              style: TextStyle(color: ColorUtil.color('#a9ee00')),
            ),
          ],
        ),
      ),
    );
  }
}
  • 在上述代码中我们用到了MaterialApp,我们所说的路由是MaterialApp级别的,也就是说如果当前页面用了MaterialApp那么在当前页面使用pop返回上一个页面时,会从当前页面的MaterialApp中查找上一个页面,如果没有则返回到一个黑屏的空白页面。

  • 另外,我们想要实现的是在PluginUse返回到main.dart页面,main.dart页面中已经有了MaterialApp,所以这里需要将PluginUse页面中的MaterialApp去掉才能通过pop返回到上一个main.dart页面


问题分析清楚后,解决这个pop黑屏的问题除了视频中所讲的方式之外,还可以通过:

///如何使用Flutter包和插件?
class PluginUse extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MyHomePage();
  }
}
class MyHomePage extends StatefulWidget {
...

这种方式直接将PluginUse中的MaterialApp去掉即可。

另外关于MaterialApp的详细介绍可以参考:http://coding.imooc.com/learn/questiondetail/115956.html


1 回复 有任何疑惑可以回复我~
  • 我想题主应该说的是这个,老师只把返回转场时出现黑色屏的问题解决了,没有交代为什么会产生这样原因,为什么删一些东西就好了,云里雾里
    回复 有任何疑惑可以回复我~ 2019-04-26 11:59:26
  • 问题更新了,看下哦
    回复 有任何疑惑可以回复我~ 2019-04-27 22:26:30
  • 提问者 北京小爷儿 回复 MRDaemon #3
    老哥懂我
    回复 有任何疑惑可以回复我~ 2019-04-28 20:16:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信