Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into enhancement/campus-tab
Browse files Browse the repository at this point in the history
  • Loading branch information
jakobkoerber committed Oct 30, 2024
2 parents 284ca9a + e68f01a commit 0495404
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:campus_flutter/base/util/placeholder_text.dart';
import 'package:campus_flutter/base/util/shimmer_view.dart';
import 'package:campus_flutter/homeComponent/view/contactCard/contact_card_view.dart';
import 'package:flutter/material.dart';

class ContactCardLoadingView extends StatelessWidget {
Expand All @@ -11,11 +12,9 @@ class ContactCardLoadingView extends StatelessWidget {
padding: const EdgeInsets.all(10.0),
child: Row(
children: [
const CircleAvatar(
backgroundImage: AssetImage(
'assets/images/placeholders/portrait_placeholder.png',
),
radius: 50,
const SizedBox(
width: contactImageSize,
height: contactImageSize,
),
const Padding(padding: EdgeInsets.only(left: 15)),
Column(
Expand Down
43 changes: 33 additions & 10 deletions lib/homeComponent/view/contactCard/contact_card_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ import 'package:campus_flutter/navigation_service.dart';
import 'package:campus_flutter/personComponent/model/personDetails/person_details.dart';
import 'package:campus_flutter/personComponent/model/profile/profile.dart';
import 'package:campus_flutter/personComponent/viewModel/person_details_viewmodel.dart';
import 'package:campus_flutter/studentCardComponent/model/student_card.dart';
import 'package:campus_flutter/studentCardComponent/viewModel/student_card_viewmodel.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

const double contactImageSize = 100;

class ContactCardView extends ConsumerStatefulWidget {
const ContactCardView({super.key, required this.profile});

Expand All @@ -25,7 +28,6 @@ class _ContactCardViewState extends ConsumerState<ContactCardView> {
@override
void initState() {
ref.read(profileDetailsViewModel).fetch(false);
ref.read(studentCardViewModel);
super.initState();
}

Expand Down Expand Up @@ -58,15 +60,7 @@ class _ContactCardViewState extends ConsumerState<ContactCardView> {
padding: const EdgeInsets.all(10.0),
child: Row(
children: [
CircleAvatar(
backgroundImage: data?.imageData != null
? Image.memory(base64DecodeImageData(data!.imageData!)).image
: const AssetImage(
'assets/images/placeholders/portrait_placeholder.png',
),
backgroundColor: Theme.of(context).cardTheme.color,
radius: 50,
),
profilePicture(),
const Padding(padding: EdgeInsets.only(left: 15)),
Expanded(
child: Column(
Expand Down Expand Up @@ -100,4 +94,33 @@ class _ContactCardViewState extends ConsumerState<ContactCardView> {
),
);
}

Widget profilePicture() {
return StreamBuilder(
stream: ref.watch(studentCardViewModel).studentCard,
builder: (context, snapshot) {
if (snapshot.hasData || snapshot.hasError) {
return CircleAvatar(
backgroundImage: imageData(snapshot),
backgroundColor: Theme.of(context).cardTheme.color,
radius: contactImageSize / 2,
);
} else {
return SizedBox(height: contactImageSize, width: contactImageSize);
}
},
);
}

ImageProvider<Object> imageData(AsyncSnapshot<List<StudentCard>?> snapshot) {
if (snapshot.hasData) {
return Image.memory(
base64DecodeImageData(snapshot.data!.first.image),
).image;
} else {
return const AssetImage(
'assets/images/placeholders/portrait_placeholder.png',
);
}
}
}

0 comments on commit 0495404

Please sign in to comment.