你好,我试图在flutter中将一个屏幕上的多个数据传递到另一个屏幕,但它显示了Invalid参数错误。我不知道哪里出了错。我提供我的导航部分代码和她的活动部分代码。
=>主页活动导航部分方法。
-这是导航方法。
getItemAndNavigation(BuildContext context){
Navigator.push(context, MaterialPageRoute(builder: (context)=>resultScanner(
scanResult: scannedResult,
resultType: resultType,
)));
}
=>这是我的第二个活动代码。
class resultScanner extends StatelessWidget {
final scanResult;
final resultType;
resultScanner({Key key, @required this.scanResult, this.resultType})
: super(key: key);
String currentTime = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
iconTheme: IconThemeData(
color: Colors.black,
),
title: Text(
"Result",
style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold),
),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Result type = ' + resultType,
style: TextStyle(color: Colors.black, fontSize: 18.0),
),
Text(
'Description = ' + scanResult,
style: TextStyle(color: Colors.black, fontSize: 18.0),
),
],
)),
);
}
}
=>这是错误显示。
> The following ArgumentError was thrown building resultScanner(dirty,
> state: _resultScannerState#7c9c8): Invalid argument(s)
>
> The relevant error-causing widget was: resultScanner
> file:///F:/Work/QReader/qreader/qreader/lib/screens/homeui.dart:458:34
> When the exception was thrown, this was the stack:
> #0 _StringBase.+ (dart:core-patch/string_patch.dart:267:57)
> #1 _resultScannerState.build (file:///F:/Work/QReader/qreader/qreader/lib/screens/result_scan.dart:46:30)
> #2 StatefulElement.build (package:flutter/src/widgets/framework.dart:4663:28)
> #3 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4546:15)
> #4 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
这是因为您还没有在第二个屏幕上定义类型。
class resultScanner extends StatelessWidget {
final scanResult;
final resultType;
}
将其更改为final String scanResult
和final String resultType
或者你想让他们成为什么样的人。
打印声明中的此代码还有另一个问题:
Text(
'Result type = ' + resulType,
style: TextStyle(color: Colors.black, fontSize: 18.0),
),
应该是:
Text(
'Result type = $resultType'
style: TextStyle(color: Colors.black, fontSize: 18.0),
),
scanResult也是如此。
我对它的编译有点惊讶,但你没有给你的变量任何类型。
因此,这条线基本上有一些宗教信仰,因为传递的变量可以与加号连接:
'Result type = ' + resultType,
给你的两个变量scanResult
和resultType
一个类型(也许它们是字符串?(,然后弄清楚一个简单的加号是否是将它们与另一个字符串连接的正确方式。