在 flutter 中使用离线图像作为滑块
use offline image for slider in flutter
晚上好
我已经使用了这个滑块图像示例并且它工作正常但我没有什么问题,我想在此代码上使用我的本地图像但是当项目已经 运行 时,它显示蓝色矩形,如何在此滑块上使用我的本地图像?
谢谢你
这是代码:
class CarouselDemo extends StatefulWidget {
CarouselDemo() : super();
final String title = "Carousel Demo";
@override
CarouselDemoState createState() => CarouselDemoState();
}
class CarouselDemoState extends State<CarouselDemo> {
CarouselSlider carouselSlider;
int _current = 0;
List imgList = [
new AssetImage('images/main-slider/1.jpg'),
new AssetImage('images/main-slider/2.jpg'),
new AssetImage('images/main-slider/3.jpg'),
new AssetImage('images/main-slider/4.jpg'),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
carouselSlider = CarouselSlider(
height: 400.0,
initialPage: 0,
onPageChanged: (index) {
setState(() {
_current = index;
});
},
items: imgList.map((imgUrl) {
return Builder(
builder: (BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.symmetric(horizontal: 10.0),
decoration: BoxDecoration(
color: Colors.green,
),
child: Image.network(
imgUrl,
fit: BoxFit.fill,
),
);
},
);
}).toList(),
),
),
),
);
}
问题是 imgList
是 List<AssetImage>
,但您正试图显示带有 Image.network 的图像。
Image.network creates a widget that displays an [ImageStream] obtained from the
network.
您需要创建一个 List<Sring>
,其中字符串将是相对于 pubspec.yaml
文件的路径。也不要使用 Image.Network 你应该使用 Image.assest 因为你想创建一个小部件来显示从资产包中获得的 [ImageStream]。
class CarouselDemo extends StatefulWidget {
CarouselDemo() : super();
final String title = "Carousel Demo";
@override
CarouselDemoState createState() => CarouselDemoState();
}
class CarouselDemoState extends State<CarouselDemo> {
CarouselSlider carouselSlider;
int _current = 0;
List imgList = [
'images/main-slider/1.jpg',
'images/main-slider/2.jpg',
'images/main-slider/3.jpg',
'images/main-slider/4.jpg'
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
carouselSlider = CarouselSlider(
height: 400.0,
initialPage: 0,
onPageChanged: (index) {
setState(() {
_current = index;
});
},
items: imgList.map((imgUrl) {
return Builder(
builder: (BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.symmetric(horizontal: 10.0),
decoration: BoxDecoration(
color: Colors.green,
),
child: Image.asset(
imgUrl,
fit: BoxFit.fill,
),
);
},
);
}).toList(),
),
],
),
),
);
}
}
晚上好
我已经使用了这个滑块图像示例并且它工作正常但我没有什么问题,我想在此代码上使用我的本地图像但是当项目已经 运行 时,它显示蓝色矩形,如何在此滑块上使用我的本地图像? 谢谢你 这是代码:
class CarouselDemo extends StatefulWidget {
CarouselDemo() : super();
final String title = "Carousel Demo";
@override
CarouselDemoState createState() => CarouselDemoState();
}
class CarouselDemoState extends State<CarouselDemo> {
CarouselSlider carouselSlider;
int _current = 0;
List imgList = [
new AssetImage('images/main-slider/1.jpg'),
new AssetImage('images/main-slider/2.jpg'),
new AssetImage('images/main-slider/3.jpg'),
new AssetImage('images/main-slider/4.jpg'),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
carouselSlider = CarouselSlider(
height: 400.0,
initialPage: 0,
onPageChanged: (index) {
setState(() {
_current = index;
});
},
items: imgList.map((imgUrl) {
return Builder(
builder: (BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.symmetric(horizontal: 10.0),
decoration: BoxDecoration(
color: Colors.green,
),
child: Image.network(
imgUrl,
fit: BoxFit.fill,
),
);
},
);
}).toList(),
),
),
),
);
}
问题是 imgList
是 List<AssetImage>
,但您正试图显示带有 Image.network 的图像。
Image.network creates a widget that displays an [ImageStream] obtained from the network.
您需要创建一个 List<Sring>
,其中字符串将是相对于 pubspec.yaml
文件的路径。也不要使用 Image.Network 你应该使用 Image.assest 因为你想创建一个小部件来显示从资产包中获得的 [ImageStream]。
class CarouselDemo extends StatefulWidget {
CarouselDemo() : super();
final String title = "Carousel Demo";
@override
CarouselDemoState createState() => CarouselDemoState();
}
class CarouselDemoState extends State<CarouselDemo> {
CarouselSlider carouselSlider;
int _current = 0;
List imgList = [
'images/main-slider/1.jpg',
'images/main-slider/2.jpg',
'images/main-slider/3.jpg',
'images/main-slider/4.jpg'
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
carouselSlider = CarouselSlider(
height: 400.0,
initialPage: 0,
onPageChanged: (index) {
setState(() {
_current = index;
});
},
items: imgList.map((imgUrl) {
return Builder(
builder: (BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.symmetric(horizontal: 10.0),
decoration: BoxDecoration(
color: Colors.green,
),
child: Image.asset(
imgUrl,
fit: BoxFit.fill,
),
);
},
);
}).toList(),
),
],
),
),
);
}
}