Flutter运行报Too many positional argument错误求助
问题现象
编写第一份Flutter代码时触发两类报错,无法继续开发:
- 第一类报错提示:
Too many positional argument: 0 expected, but 1 found - 尝试按提示将位置参数修改为命名参数后,又触发「命名参数已被使用」的报错
问题原代码如下:
import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( debugShowCheckedModeBanner: false, title: "My app", home: Scaffold( appBar: AppBar( centerTitle: true, title: const Text("My first App") ), body: Column( children: [ Center(child: Image.network("https://images.unsplash.com/photo-1526779259212- 939e64788e3c?ixlib=rb- 1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1474&q=80", height:300, width: 300,), const Text('My first app',) ) ], ), ), ) ); }
错误原因
报错和参数定义无关,核心是两个代码编写疏漏:
- 括号闭合位置错误:
Center组件仅支持一个child命名参数,原代码里Center的右括号错放在了const Text('My first app',)的后面,导致Text组件被识别成传给Center的多余位置参数,触发位置参数数量不匹配的报错;盲目修改参数类型自然会触发其他参数相关报错。 - 图片URL字符串被硬换行拆分成了多行,字符串断裂后后续运行也会触发图片加载失败问题。
修复方案
按以下两点调整代码即可正常运行:
- 调整括号位置:把
Center的闭合括号移动到Image.network代码段的末尾,让Text组件和Center组件平级,共同作为Column的children子元素。 - 把断裂的图片URL拼接成完整无换行的单行字符串,避免字符串解析错误。
修复后可运行代码
import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( debugShowCheckedModeBanner: false, title: "My app", home: Scaffold( appBar: AppBar( centerTitle: true, title: const Text("My first App") ), body: Column( children: [ Center( child: Image.network( "https://images.unsplash.com/photo-1526779259212-939e64788e3c?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1474&q=80", height: 300, width: 300, ), ), const Text('My first app') ], ), ), )); }
内容的提问来源于stack exchange,提问作者Gaurav Sharma
相关产品推荐
相关产品推荐

