最初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