Flutter代码报错:Too many positional arguments: 0 expected, but 1 found
问题排查与解决
错误原因
错误提示“Too many positional arguments: 0 expected, but 1 found”的核心问题是:Center组件仅支持一个child参数,但你的代码里直接在Center下放置了Padding和ElevatedButton两个子组件,违反了该组件的参数规则。
修复方案
将Center内的两个子组件用Column(或其他适配的布局组件)包裹,让Center仅持有一个child。修改后的完整代码如下:
import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( home: const RunMyApp(), debugShowCheckedModeBanner: false, theme: ThemeData(primarySwatch: Colors.green), )); } class RunMyApp extends StatelessWidget { const RunMyApp({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Login page'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( padding: const EdgeInsets.all(15), child: Column(children: const <Widget>[ Padding( padding: EdgeInsets.all(15), child: TextField( decoration: InputDecoration( border: OutlineInputBorder(), hintText: 'Enter a phone number', labelText: 'Phone', ), ), ), Padding( padding: EdgeInsets.all(15), child: TextField( decoration: InputDecoration( border: OutlineInputBorder(), labelText: 'Password', hintText: 'Enter Password', ), ), ), ElevatedButton( onPressed: null, child: Text('Login'), ), ]), ), ElevatedButton( onPressed: () { Navigator.push(context, MaterialPageRoute(builder: (context) => const NextPage())); }, child: const Text('Home Page')), ], ), ), ); } } class NextPage extends StatelessWidget { const NextPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Next Page'), ), body: const Center( child: Text('Welcome'), ), ); } }
关键修改说明
- 用
Column包裹原Center内的两个子组件,使其成为Center的唯一child - 添加
mainAxisAlignment: MainAxisAlignment.center,保证Column内的元素垂直居中,匹配原布局的视觉效果
内容的提问来源于stack exchange,提问作者Naveen Dwivedi
相关产品推荐
相关产品推荐

