我希望能够按下按钮并导航到另一个屏幕,同时传递对象作为参数。该对象是使用不同 dart 文件中的 getPlayer() 函数创建的;因此,异步函数。每当我运行代码时,我都会收到错误:
Error: This expression has type 'void' and can't be used. onPressed: loadPlayerCard('nebula'),
这是代码:
class _HomeState extends State<Home> {
List<Player> players;
void loadPlayerCard (String playerName) async {
Player player = await getPlayer(playerName);
players.add(player);
Navigator.pushNamed(context, '/playerCard', arguments: player);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey[900],
appBar: AppBar(
title: Text('Smash Tracker'),
centerTitle: true,
backgroundColor: Colors.grey[850],
elevation: 0,
),
body: Center(
child: RaisedButton.icon(
onPressed: loadPlayerCard('nebula'), //This is where the error message points to
icon: Icon(Icons.touch_app),
label: …Run Code Online (Sandbox Code Playgroud) 我正在从现有列表中创建一个列表,当我使用这个新列表并对其执行一些操作(例如更改其数量参数)时,它也会更改现有列表的参数。有人可以告诉我我哪里出了问题吗?
现有名单:
List<ItemsModel> originalList=[
ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
ItemsModel(name: 'High Quality Double Spring Tummy Trimmer For Unisex',quantity: '30'),
];
Run Code Online (Sandbox Code Playgroud)
新名单:
List<ItemsModel> updatedItemList;
void initState() {
updatedItemList=[];
originalList.forEach((val){
updatedItemList.add(val);
});
super.initState();
}
Run Code Online (Sandbox Code Playgroud)
按下按钮时:
updatedItemList[i].quantity=qtyReceive
Run Code Online (Sandbox Code Playgroud)
在按下某个按钮时,我正在执行更新两个列表的操作。为什么??