在屏幕之间传递变量值



我写了一个示例代码,不幸的是它很大,但这是理解我的问题本质的唯一方法。

在B页,在B类中,有以下代码-

class B extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () async {
var result = '';
var url = "http://10.0.101.141:6113/api/Cashier/authenticate";
final response = await http.post(
Uri.parse(url),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, String>{
'login': _textEditingController.text,
'password': _passEditingController.text
}),
);
if(response.statusCode == 200) {
result = jsonEncode(response.body); //THIS VARIABLE I NEED HOW TO DRAG TO FILE "A"
print(result);
Navigator.pushNamed(context, '/home');
} else {
print('err');
}
//
// print(_textEditingController.text);
// print(_passEditingController.text);
},
child: Text('sdfsdfs'))
],
),
),
)
}
}

我需要在文件A中使用结果变量,类A -

class A extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () async {
var sum = int.parse(text);
const url = "http://10.0.101.141:6113/api/transaction/createtransaction";
final token = ''; //HERE I NEED TO USE THIS VARIABLE
try {
final response = await http.post (
Uri.parse(url),
headers: <String, String>{
"Content-Type": "application/json; charset=UTF-8",
"Authorization": 'Bearer $token'
},
body: jsonEncode(<String, int> {
'amount': sum
})
);
if (response.statusCode == 200) {
Navigator.push(context, new MaterialPageRoute(builder: (context) => new Qr()));
var res = await response.body;
print(res);
} else{
var res = response.statusCode;
print(res);
}
} catch (error) {
print(error);
}
},
child: Text('sdfsdfs'))
],
),
),
)
}
}

你能告诉我怎么做吗?我试图提供所有必要的信息,如果有很多不必要的代码,我只是勾画了这个小结构,但它传达了问题的本质

任何帮助都会很高兴!

PS:通过链接你可以看到两个文件的代码,有感叹号的地方,这个变量需要移动到问号 的地方

你可以这样发送

class B extends StatelessWidget {
const B({ Key key }) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(child: TextButton(onPressed: (){
Navigator.push(context, new MaterialPageRoute(builder: (context) => new A(value: "My value",)));

}, child: Text("Send second class")),

);
}
}

class A extends StatefulWidget {
A({Key key, this.value}) : super(key: key);
final String value;
@override
State<A> createState() => _AState();
}
class _AState extends State<A> {
@override
Widget build(BuildContext context) {
return Container(child: Text(widget.value),);
}
}

最新更新