将变量(photoUrl)传递到小部件的最佳方法是什么? 在状态类中添加小部件时说:在初始化程序中只能访问静态成员。
将方法更改为静态方法不能解决我的问题。
class _ABState extends State<AB> {
int _selectedPage = 0;
String photoUrl; /* Value set in initState()*/
/* To switch between pages */
final _pageOptions = [
Text('Page 1'),
accountPage(), /* Page 2 */
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: _pageOptions[_selectedPage],
);
}
}
/* Widget outside class requires photoUrl */
Widget accountPage() {
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(photoUrl),
),
),
);
}
答案 0 :(得分:1)
您正在初始化程序上调用accountPage()
,但是photoUrl
仅在initState()
上设置,因此即使accountPage()
可以访问photoUrl
,它也会得到错误的值。
我建议以下内容:
class _ABState extends State<AB> {
int _selectedPage = 0;
String photoUrl;
List<Widget>_pageOptions;
@override
void initState() {
super.initState();
photoUrl = "<PLACE_YOUR_VALUE>";
_pageOptions = [
Text('Page 1'),
accountPage(photoUrl),
];
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _pageOptions[_selectedPage],
);
}
}
Widget accountPage(String photoUrl) {
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(photoUrl),
),
),
);
}