🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / FLUTTER / resim galeri uygulaması el ile büyütme gallery vs photo view kullanımı

1-) FLUTTER - resim galeri uygulaması el ile büyütme gallery vs photo view kullanımı

 

 

kaynak : https://pub.dev/packages/photo_view

 

EKRAN GÖRÜNTÜSÜ

 

 

 

import 'dart:convert';

import 'package:ders2/ders2/api_resim.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:photo_view/photo_view.dart';
import 'package:photo_view/photo_view_gallery.dart';

import 'resimresmodel.dart';

class AnasayfaPage3 extends StatefulWidget {
  
const AnasayfaPage3({Key? key}) : super(key: key);

  
@override
  
State<AnasayfaPage3> createState() => _AnasayfaPage3State();
}

class _AnasayfaPage3State extends State<AnasayfaPage3> {
  
bool yuklendimi = false;

  
ResimResModel? resimResModel = null;

  
@override
  
void initState() {
    
// TODO: implement initState
    
super.initState();

    
yuklendimi = false;

    
ApiResim apiResim = new ApiResim();
    
apiResim.getResimList().then((ResimResModel resimResModel) {
      
this.resimResModel = resimResModel;
      
yuklendimi = true;
      setState(() {});
    });
  }

  
@override
  
Widget build(BuildContext context) {
    
return Scaffold(
        appBar:
AppBar(
          title:
Text("Anasayfa"),
        ),
        body:
yuklendimi == false ? loadingContent() : bodyContent());
  }

  
Center loadingContent() => Center(child: CircularProgressIndicator());

  
Widget bodyContent(){
    
return Container(
        child:
PhotoViewGallery.builder(
          scrollPhysics:
const BouncingScrollPhysics(),
          builder: (
BuildContext context, int index) {
            
return PhotoViewGalleryPageOptions(
              imageProvider: imageContent(index),
              initialScale:
PhotoViewComputedScale.contained * 0.8,
              heroAttributes:
PhotoViewHeroAttributes(tag: resimResModel!.resimData![index].id!),
            );
          },
          itemCount:
resimResModel!.resimData!.length,
          loadingBuilder: (context, event) =>
Center(
            child:
Container(
              width:
20.0,
              height:
20.0,
              
// child: CircularProgressIndicator(
              //   value: event == null
              //       ? 0
              //       : event.cumulativeBytesLoaded / event.expectedTotalBytes,
              // ),
            
),
          ),
          
// backgroundDecoration: widget.backgroundDecoration,
          // pageController: widget.pageController,
          // onPageChanged: onPageChanged,
        
)
    );;
  }

  
ImageProvider imageContent(int index) {
    
Image imageContent = new Image.memory(
      
Base64Decoder().convert(resimResModel!.resimData![index].base64!),
      height:
150,
      fit:
BoxFit.fill,
    );
    
ImageProvider imageProvider = imageContent.image;
    
return imageProvider;
  }
}

 

 

 

 2022 Aralık 07 Çarşamba
 367