Flutter Center组件必填参数报错:VSCode提示需1个参数却传入0个
Flutter Center()组件报「预期1个必填参数,但传入0个」?看这篇解决!
最近遇到个头疼的问题:不管是新建的默认Flutter项目还是老项目,用Center()组件时VSCode一直报错说「预期1个必填参数,但传入0个」。试了网上各种针对类似组件(比如Card、MaterialApp)的解决方案都没用,折腾了好一阵才找到根源,分享给大家。
我的环境与问题详情
先贴一下我的Flutter版本:
PS D:\Flutter\Projects\test02> flutter --version Flutter 1.0.0 • channel beta • https://github.com/flutter/flutter.git Framework • revision 5391447fae (6周前) • 2018-11-29 19:41:26 -0800 Engine • revision 7375a0f414 Tools • Dart 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)
一开始我以为是代码写法问题,甚至试着给Center传了null来消编辑器报错,结果编译时还是炸:
class MyHomePage extends StatelessWidget{ @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white24, body: Center(null, child: ListView( shrinkWrap: true, padding: EdgeInsets.only(left: 24.0, right: 24.0), children: <Widget>[ Text("data"), Text("data"), ], ), ) ); } }
排查过程与解决方法
- 搜了一圈发现很多人在其他组件遇到类似问题,但清理缓存、更新依赖这些操作对我完全没用。
- 后来想切换到stable通道试试,结果终端提示我有未提交的更改——这一下点醒我了!会不会是我改了Flutter的核心文件?
- 翻了半天终于找到:我之前调试的时候手欠改了SDK里的
basic.dart文件,给Center类的构造函数加了个额外参数! - 赶紧把那个额外参数删掉,恢复
basic.dart的原样,再回到项目里一看,报错直接消失了,编译也正常了。
总结一下
如果遇到这种所有项目都出现的组件参数异常报错,而且通用解法都不管用,一定要检查自己是不是误修改了Flutter SDK的源码文件。这类修改会全局影响所有项目,而切换通道时的未提交更改提示,是个非常关键的排查信号!
内容的提问来源于stack exchange,提问作者Muhmmad Aziz
相关产品推荐
相关产品推荐

