【发布时间】:2020-09-11 11:48:49
【问题描述】:
我有这个页面,它从上一页接收一个参数变量(weekId),我想在按下按钮图标后更改这个值来增加或减少它。 我做到了,但是当页面重建时,它再次接收到的参数变量值。 我该如何解决它:
class PreDetail extends StatefulWidget {
@override
_PreDetailState createState() => _PreDetailState();
}
class _PreDetailState extends State<PreDetail> {
var weekId;
@override
Widget build(BuildContext context) {
List preData = [];
Map rdata = ModalRoute.of(context).settings.arguments;
var userName = rdata['username'];
var weekId = rdata['week_id'];
//ok
var mywidth = MediaQuery.of(context).size.width;
Future<List> get_week_pre() async {
print('weekId = $weekId'); -----------// variable I want to setState
try {
//ok
var url =
'https://technosat-iq.com/myexpect/api/controller/matchs/pre_week.php?username=$userName&week_id=$weekId';
var response = await http.get(url);
var data = await jsonDecode(response.body);
print(data);
for (var x in data) {
WeekPre preList = WeekPre(
x['username'],
preData.add(preList);
}
return preData;
} catch (Expection) {
print(Expection);
}
}
return FutureBuilder(
future: get_week_pre(),
builder: (ctx, snapshot) {
if (snapshot.connectionState == ConnectionState.none ||
snapshot.data == null) {
return Center(
child: CircularProgressIndicator(strokeWidth: 6.0),
);
} else {
return Scaffold(
appBar: AppBar(
title: Text('Points Detail'),
centerTitle: true,
backgroundColor: Colors.orange[800],
),
body: Container(
child: ListView(
children: [
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
height: 50,
width: 0.2 * mywidth,
child: IconButton(
alignment: Alignment.center,
icon: Icon(
Icons.arrow_right,
size: 50,
color: Colors.pink[800],
),
onPressed: () {
weekId = int.parse(weekId);
setState(() {
weekId++; -------------// here I want to setState
});
print(weekId);
}),
),],)],),));}},);}}
可以在构建上下文之外接收参数吗?
【问题讨论】:
标签: flutter dart arguments setstate