我对flutter感到困惑,当我想从statefulwidget (initstate)中读取参数并将其访问到widget build中时,该变量仍然为null。如何正确地阅读它?我的代码如下:
import 'package:flutter/material.dart';
import 'package:caritokoonline_v2/components/ResultForm.dart';
import 'package:caritokoonline_v2/podo/SearchBarangRequest.dart';
class ResultBarangActivity extends StatefulWidget {
SearchBarangRequest searchBarangRequest;
@override
_ResultBarangActivityState createState() => _ResultBarangActivityState();
}
class _ResultBarangActivityState extends State<ResultBarangActivity> {
final _scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState(){
Future.delayed(Duration.zero,(){
setState(() {
widget.searchBarangRequest = ModalRoute.of(context).settings.arguments;
print(widget.searchBarangRequest.keyword);
});
});
super.initState();
}
@override
Widget build(BuildContext context) {
if (widget.searchBarangRequest == null) return Scaffold(); //this line is always executed
return ResultForm(
scaffoldKey: _scaffoldKey,
title: widget.searchBarangRequest.keyword,
subTitle: widget.searchBarangRequest.hargaRange.toString(),);
}
}谢谢!
发布于 2019-05-14 17:35:31
我知道错在哪里了,
因此,我创建了全局变量(标题、副标题)并从searchBarangRequest赋值,如下所示:
String title = "";String subtitle = "";
class _ResultBarangActivityState extends State<ResultBarangActivity> {
final _scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState(){
Future.delayed(Duration.zero,(){
setState(() {
widget.searchBarangRequest = ModalRoute.of(context).settings.arguments;
title = widget.searchBarangRequest.keyword;
subtitle = "${Utils().kondisiToString(widget.searchBarangRequest.kondisiBarang)} | ${widget.searchBarangRequest.hargaRange.toString()}";
// print(widget.searchBarangRequest.keyword);
getProducts(widget.searchBarangRequest);
});
});
super.initState();
}
}而且它工作得很完美!谢谢。
https://stackoverflow.com/questions/56108384
复制相似问题