【发布时间】:2019-07-05 12:13:21
【问题描述】:
我有一个 int 值从第一个屏幕传递到第二个屏幕,我可以毫无问题地获得我的值...我的问题是我想将收到的值添加到 astring 以完成并开始使用我的 api这需要添加第一个屏幕的导入值...我被困在我无法将其更改为静态的接收到的 int 和需要添加的值是静态的 api 字符串之间
第二屏:
class CatsNews extends StatefulWidget {
@override
_CatsNewsState createState() => new _CatsNewsState();
}
class _CatsNewsState extends State<CatsNews> {
int _id ;
String root = "http://api.0mr.net";
String url = "/api/GetCategoryById/$_id";
@override
List data;
Future<String> getDrawerItem() async {
var response = await http.get(
Uri.encodeFull(url), headers: {"Accept": "application/json"});
setState(() {
var respondbody = json.decode(response.body);
data = respondbody["StoriesCategory"];
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Cat Screen'),
),
body: Center()
我通过共享首选项获取值,如果它在 Widget build(BuildContext context) 中,它可以正常工作
@override
void initState() {
getIntPrefrence().then(updatId);
super.initState();
this.getDrawerItem();
}
void updatId(int id) {
setState(() {
this._id = id;
});
}
}
更新: 我已将 Srting url 添加到 initstate() 中,代码如下:
class _CatsNewsState extends State<CatsNews> {
@override
List data;
int _id ;
var response;
String root = "http://-api.0mr.net";
String url ;
Future<String> getDrawerItem() async {
response = await http
.get(Uri.encodeFull(url), headers: {"Accept": "application/json"});
setState(() {
var respondbody = json.decode(response.body);
data = respondbody["StoriesCategory"];
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('$_id'),
),
body: Center()
}
Future<int> getIntPrefrence() async {
SharedPreferences pref = await SharedPreferences.getInstance();
int id = pref.getInt("id");
return id;
}
@override
void initState() {
super.initState();
getIntPrefrence().then(updatId);
updateurl();
this.getDrawerItem();
//initResponse();
}
updateurl() {
setState(() {
this.url= "$root/api/CategoryId/$_id";
});
}
void updatId(int id) {
setState(() {
this._id = id;
});
}
}
之前的问题是通过将字符串添加到 initstate() 来解决的,但是更新的值不会添加到字符串中,并且会将导入的 int id 处理为 null 或零,但是 int id 可以正常工作并显示导入的Widget build(BuildContext context) 内任何小部件中的值
【问题讨论】:
-
在
initState中设置网址