我正在尝试用flutter构建一个应用程序(它使用Dart 2)。我得到了一个错误,我找不出来:
错误出现在child: new Center(
上
@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(),
);
}
发布于 2018-08-15 06:44:11
我在这个错误中经历了一段可怕的时间(显然与上面的注释更正的根本原因不同)。这里提供的信息,以防其他任何人发现基于错误代码的这篇文章。
在我的例子中,我有一个格式不正确的构造函数...
在main.dart中...
@override
void initState() {
tapScreen = PageTapScreen(
key : keyOne,
profileList : demoProfiles,
tapScreenContext : tapScreenContext,
); . . .
在我的代码库中的其他地方:
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 = ...
时生成的错误:
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.
PageTapScreen({
this.key,
this.profileList,
this.tapScreenContext}) : super(key: key)
再说一次,我在这里发帖的唯一原因是为了强调对原始文章中提到的错误代码的潜在修复。根据错误消息,修复可能不直观。
发布于 2018-10-05 02:14:40
我认为您无意中更改了Basic.dart小部件。在(your_flutter_sdk/flutter/packages/flutter/lib/src/widgets/basic.dart).中你需要一个新的。您需要重新安装Flutter软件包。
发布于 2020-02-07 22:45:25
所以问题出在响应上。所以我这样解决了它
@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');
}
}
https://stackoverflow.com/questions/51667637
复制相似问题