首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“需要1个必需的参数,但找到0个”错误

“需要1个必需的参数,但找到0个”错误
EN

Stack Overflow用户
提问于 2018-08-03 15:43:17
回答 3查看 10.1K关注 0票数 8

我正在尝试用flutter构建一个应用程序(它使用Dart 2)。我得到了一个错误,我找不出来:

错误出现在child: new Center(

代码语言:javascript
复制
@override
Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('Begin with a search...'),
        actions: <Widget> [
          new FlatButton(
            child: new Text('Logout', style: new TextStyle(fontSize: 17.0, color: Colors.white)),
            onPressed: _signOut,
          )
        ]
      ),
      body: new Container(
        margin: EdgeInsets.symmetric(horizontal: 20.0),
        child: new Center(
          child: new Row(
            children: <Widget>[
              new TextField(
                controller: _controller,
                autofocus: true,
                textAlign: TextAlign.start,
                decoration: new InputDecoration(
                  prefixIcon: new Padding(
                    padding: const EdgeInsetsDirectional.only(end: 10.0),
                    child: new Icon(Icons.search),
                  ),
                  border: new OutlineInputBorder(borderRadius: new BorderRadius.all(Radius.circular(20.0))),
                  hintText: 'Search for a recipient',
                ),
                onChanged: null,
              ),
              new FlatButton(
                onPressed: () {_controller.clear();},
                child: new Icon(Icons.clear)
              ),
            ],
          ),
        ),
      ),
      bottomNavigationBar: NavBar(),
    );
  } 
EN

回答 3

Stack Overflow用户

发布于 2018-08-15 06:44:11

我在这个错误中经历了一段可怕的时间(显然与上面的注释更正的根本原因不同)。这里提供的信息,以防其他任何人发现基于错误代码的这篇文章。

在我的例子中,我有一个格式不正确的构造函数...

在main.dart中...

代码语言:javascript
复制
@override
  void initState() {
    tapScreen = PageTapScreen(
      key : keyOne,
      profileList :  demoProfiles,
      tapScreenContext : tapScreenContext,
    ); . . . 

在我的代码库中的其他地方:

代码语言:javascript
复制
class PageTapScreen extends StatefulWidget {
  final Key key;
  final List<Profile> profileList;
  final BuildContext tapScreenContext;  

PageTapScreen(
    this.key,
    this.profileList,
    this.tapScreenContext) : super(key: key)  . . . 

在main.dart中调用tapScreen = ...时生成的错误:

代码语言:javascript
复制
3 required argument(s) expected, but 0 found.
The named parameter 'key' isn't defined.
The named parameter 'profileList' isn't defined.
The named parameter 'tapScreenContext' isn't defined.

修复方法是向类构造函数添加大括号,以便清楚地指定命名参数per this reference.

代码语言:javascript
复制
PageTapScreen({
    this.key,
    this.profileList,
    this.tapScreenContext}) : super(key: key)  

再说一次,我在这里发帖的唯一原因是为了强调对原始文章中提到的错误代码的潜在修复。根据错误消息,修复可能不直观。

票数 11
EN

Stack Overflow用户

发布于 2018-10-05 02:14:40

我认为您无意中更改了Basic.dart小部件。在(your_flutter_sdk/flutter/packages/flutter/lib/src/widgets/basic.dart).中你需要一个新的。您需要重新安装Flutter软件包。

票数 1
EN

Stack Overflow用户

发布于 2020-02-07 22:45:25

所以问题出在响应上。所以我这样解决了它

代码语言:javascript
复制
 @override
 Future<AuthUser> doLogin(data) async {
 final response = await http.post('$baseUrl/user/login', body: data);

 if (response.statusCode == 200) {
   var data = json.decode(response.body); 
    print(data['success']['user']);
    return AuthUser.fromJson(data['success']['user']); 
 }else {
   throw new Exception('Failed To Login User');
 }


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51667637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档