Flutter报错:预期0个位置参数却传入3个,求解决方案
Flutter错误求助:参数不匹配及组件语法问题
我是Flutter新手,调用第191行的_textformField()函数时,收到“too many positional arguments: 0 expected but 3 found”错误。尝试移除textformField Widget后,错误转移到SingleChildScrollView()处。
相关代码片段
HomePage中的_textformField方法
class HomePage extends StatelessWidget { Widget _textformField(){ return Padding( padding: EdgeInsets.only(right: 10), child: TextFormField( decoration: InputDecoration( fillColor: Color(0xff3a3e3e), filled: true, hintText: "Search Food", hintStyle: TextStyle(color: Colors.white), prefixIcon: Icon(Icons.search,color: Colors.white,), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide.none, ), ), ), ); }
调用代码片段
_textformField(), SingleChildScrollView( scrollDirection: Axis.horizontal, child: Row( children: [ _allCategories( image: 'images/Ayam-Goreng.png', title: 'Ayam Goreng', ), _allCategories( image: 'images/Ayam-Kari.png', title: 'Ayam Kari', ),
_allCategories方法
Widget _allCategories({required String image, required String title}){ return Container( height: 130, margin: EdgeInsets.symmetric(horizontal: 10), child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Container( height: 70, width: 70, decoration: BoxDecoration( color: Colors.grey, image: DecorationImage( fit: BoxFit.cover, image: AssetImage(image), ), borderRadius: BorderRadius.circular(10.0) ), ), Text(title,style: TextStyle(fontSize: 18, color: Colors.white),) ], ), ); }
_bottomCategories方法
Widget _bottomCategories({required String image, required String title, required double price}){ return Container( decoration: BoxDecoration( color: Color(0xff3c3f40), borderRadius: BorderRadius.circular(20.0) ), child: Padding( padding: EdgeInsets.symmetric(horizontal: 15), child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( child: Center( child: CircleAvatar( backgroundImage: AssetImage(image), radius: 60, backgroundColor: Colors.transparent, ) ), ), Container( height: 50, child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(title, style: TextStyle( fontSize: 15, color: Colors.white, fontWeight: FontWeight.bold ), ), Text( '\$ $price', style: TextStyle( fontSize: 15, color: Colors.white, fontWeight: FontWeight.bold ), ), ], ), Row( children: [ Icon( Icons.star, size: 14, color: Colors.white, ), Icon( Icons.star, size: 14, color: Colors.white, ), Icon( Icons.star, size: 14, color: Colors.white, ), Icon( Icons.star, size: 14, color: Colors.grey, ), ], ), ], ), ), ], ), ), ); }
问题解决
1. 参数不匹配错误
_textformField()定义时无参数,报错说明实际调用时可能误传了位置参数,或者调用上下文存在语法错误(比如括号、逗号不规范)导致编译器误判。检查调用代码,确保是_textformField(),无多余参数,且所在Widget列表语法正确。
2. SingleChildScrollView报错
你贴的SingleChildScrollView代码未闭合,缺少Row的children闭合方括号、Row和SingleChildScrollView的闭合括号,补全后代码如下:
SingleChildScrollView( scrollDirection: Axis.horizontal, child: Row( children: [ _allCategories( image: 'images/Ayam-Goreng.png', title: 'Ayam Goreng', ), _allCategories( image: 'images/Ayam-Kari.png', title: 'Ayam Kari', ), ], ), )
3. 通用检查
检查整个HomePage的build方法,确保所有Widget嵌套闭合,逗号使用正确,这类语法错误常导致编译器误报参数问题。
内容的提问来源于stack exchange,提问作者icestormpure
相关产品推荐
相关产品推荐

