【发布时间】:2020-09-10 10:56:48
【问题描述】:
我在这里有一份来自我的应用程序的草稿作为演示,我正在尝试将图像从一个页面传递到另一个页面,但这不是问题,可以从主页和图像页面这两个页面访问接收页面 (CandyJar)。 Imagepage 将蛋糕图像(AssetImage('images/cake.png')) 传递到 Candyjar 页面 & 主页只是导航到 CandyJar 页面; 从主页导航时我的问题在这里我希望它显示神秘框图像(AssetImage('images/mystrybox.png'),除非蛋糕图像已经从图像页面传递,那么它将显示蛋糕图像。 我知道描述令人困惑,但我试图尽可能地具有描述性&这里是三个页面的代码示例以澄清更多
主页:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
RaisedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CandyJar(),
),
);
},
child: Text('Got to candy jar page'),
),
SizedBox(
height: 40.0,
),
RaisedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ImagePage(),
),
);
},
child: Text('Go to Image page'),
)
],
);
}
}
CandyJar 页面
class CandyJar extends StatefulWidget {
CandyJar({
this.cakeImage,
});
final ImageProvider cakeImage;
@override
_CandyJarState createState() => _CandyJarState();
}
class _CandyJarState extends State<CandyJar> {
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(25.0),
padding: EdgeInsets.all(10.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25.0),
color: Colors.white30,
),
child: Image(
//image: AssetImage('images/mysterybox.png'), Show this Image when navigating from Homepage unless the Cake image has been already passed through from Image page then it will show the cake image.
image: widget.cakeImage,
height: 70.0,
width: 70.0,
),
);
}
}
图片页面:
class ImagePage extends StatefulWidget {
@override
_ImagePageState createState() => _ImagePageState();
}
class _ImagePageState extends State<ImagePage> {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Image(
image: AssetImage('images/cake.png'),
),
RaisedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CandyJar(
cakeImage: AssetImage('images/cake.png'),
),
),
);
},
child: Text(
'Pass cake image to Candy Jar Page & replace the mysterybox image'),
),
],
);
}
}
非常感谢您在此问题上的任何帮助将不胜感激:D
【问题讨论】:
-
所以您想将图像路径传递给所有小部件
-
我想从 Imagepage 传递图像作为奖励,这样在从主页导航时它不会显示,直到它被传递