Это может быть глупый вопрос, но я хочу сохранить image url
из карусели в другую String pathImage
, чтобы сохранить его в галерее. когда я перехожу к следующему изображению в карусели, я хочу обновить imagePath
до этого image url
в карусели. Я использую пакеты carousel_pro
и gallery_saver
. Это код:
import 'package:carousel_pro/carousel_pro.dart';
import 'package:flutter/material.dart';
import 'package:pursattm/models/models.dart';
import 'package:pursattm/utils/utils.dart';
import 'package:gallery_saver/gallery_saver.dart';
class DetailsFullImage extends StatefulWidget {
DetailsFullImage({Key key, this.imagesForCarousel}) : super(key: key);
final List<Images> imagesForCarousel;
@override
_DetailsFullImageState createState() => _DetailsFullImageState();
}
class _DetailsFullImageState extends State<DetailsFullImage> {
// image download declarations
String pathImage = '';
String albumName = 'Media';
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: Container(
height: SizeConfig.sh / 3,
child: Carousel(
// onImageChange: () {},
images: widget.imagesForCarousel.map((image) {
pathImage = image.url; // declaring image.url to pathImage
return CachedNetworkImage(
imageUrl: image.url,
fit: BoxFit.fill,
alignment: Alignment.bottomCenter,
placeholder: (context, url) => Image.asset(
'assets/placeholder.png',
fit: BoxFit.fill,
),
errorWidget: (context, url, error) {
return Center(
child: Icon(
Icons.refresh,
color: Colors.black12,
),
);
},
);
}).toList(),
animationDuration: const Duration(seconds: 1),
dotSize: 8.0,
dotSpacing: 20.0,
autoplay: false,
autoplayDuration: const Duration(seconds: 4),
dotColor: Colors.white,
dotIncreasedColor: AppColors.GREEN_JUST,
dotIncreaseSize: 2.2,
dotPosition: DotPosition.bottomLeft,
indicatorBgPadding: 15,
dotBgColor: Colors.transparent,
borderRadius: false,
// moveIndicatorFromBottom: 250.0,
noRadiusForIndicator: true,
),
),
),
floatingActionButton: Builder(
builder: (BuildContext context) {
return FloatingActionButton(
backgroundColor: Colors.white,
onPressed: () async {
GallerySaver.saveImage(pathImage, albumName: albumName)
.then((bool success) {
setState(() {
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text('Sucsess!'),
backgroundColor: Colors.green,
behavior: SnackBarBehavior.floating,
),
);
});
}).catchError((e) {
setState(() {
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text('Error!'),
backgroundColor: Colors.red,
behavior: SnackBarBehavior.floating,
),
);
});
});
},
child: Icon(
Icons.file_download,
color: AppColors.GREEN,
size: 30,
),
);
},
),
);
}
}
Здесь, когда я нажимаю на FloatingActionButton, он должен сохранить imagePath из карусели на этом отображаемом изображении из списка изображений в карусели. С этим кодом imagePath
берет только последний image Url
из списка изображений в карусели.