professional profile

This commit is contained in:
Juan Felipe Duarte
2023-04-10 15:31:16 -05:00
parent 029164404a
commit 33d7da756f
10 changed files with 1030 additions and 30 deletions
@@ -0,0 +1,74 @@
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/material.dart';
const double photoSize = 100;
class ProfessionalPhoto extends StatelessWidget {
Reference? ref;
double size;
ProfessionalPhoto({super.key, required this.ref, this.size = photoSize});
Future<Widget> downloadImage() async {
try {
if (ref != null) {
final imageData = await ref!.getData();
if (imageData != null) {
return ClipOval(
child: Image.memory(
imageData,
width: size,
height: size,
fit: BoxFit.cover,
),
);
}
}
// ignore: empty_catches
} catch (e) {}
return const DefaultProfessionalPhoto();
}
@override
Widget build(BuildContext context) {
return FutureBuilder<Widget>(
future: downloadImage(),
builder: (BuildContext context, AsyncSnapshot<Widget> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
// mientras la llamada asíncrona está en proceso, muestra un mensaje de carga
return const SizedBox(
width: photoSize,
height: photoSize,
child: Center(
child: CircularProgressIndicator(),
));
} else if (snapshot.connectionState == ConnectionState.done &&
snapshot.hasData) {
return snapshot.data!;
} else {
return const DefaultProfessionalPhoto();
}
});
}
}
class DefaultProfessionalPhoto extends StatelessWidget {
const DefaultProfessionalPhoto({super.key});
@override
Widget build(BuildContext context) {
return Container(
width: photoSize,
height: photoSize,
decoration: BoxDecoration(
color: const Color(0xFF2BA4EC),
borderRadius: BorderRadius.circular(50),
),
child: const Icon(
Icons.person,
color: Color.fromARGB(255, 255, 255, 255),
size: 55,
),
);
}
}