APP_NEW/lib/Component/circle_avator.dart

96 lines
752 KiB
Dart
Raw Normal View History

2025-03-11 21:17:14 +08:00
import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:lamiter/Extension/build_context.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:lamiter/Provider/Language/language_provider.dart';
import 'package:provider/provider.dart';
class MyCircleAvator extends StatelessWidget {
final String name;
final String? photo;
final bool? gender;
final double radius;
final List<Widget>? actions;
const MyCircleAvator({
super.key,
required this.name,
this.photo,
this.gender,
required this.radius,
this.actions,
});
@override
Widget build(BuildContext context) {
final languageProvider = Provider.of<LanguageProvider>(context);
Widget _familyNameCircleAvatar(backgroundColor, style) {
return CircleAvatar(
radius: radius,
backgroundColor: backgroundColor,
child: Text(
languageProvider.getLocaleString(name.isEmpty ? '' : name[0]),
style: style,
),
);
}
Widget _photoCircleAvatar(String img64) {
return Container(
width: radius * 2,
height: radius * 2,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
image: MemoryImage(base64Decode(img64)),
fit: BoxFit.cover,
// alignment: FractionalOffset(0, (0 / 1000) * -1),
),
),
);
}
Widget returnCircleAvatar() {
return photo == null && gender == null
? _familyNameCircleAvatar(
context.inverseSurface,
TextStyle(
color: context.surface,
fontSize: radius * 0.75,
fontWeight: FontWeight.bold,
),
)
: _photoCircleAvatar(
photo ?? (gender! ? maleDefaultImage : femaleDefaultImage));
}
return actions == null || actions!.isEmpty
? returnCircleAvatar()
: GestureDetector(
onTap: () {
showCupertinoModalPopup(
context: context,
builder: (BuildContext context) => CupertinoActionSheet(
actions: actions,
cancelButton: CupertinoActionSheetAction(
isDefaultAction: true,
child: Text(AppLocalizations.of(context).cancel),
onPressed: () {
Navigator.pop(context);
},
),
),
);
},
child: returnCircleAvatar(),
);
}
final maleDefaultImage =
'/9j/4AAQSkZJRgABAgAAZABkAAD/4QCwRXhpZgAATU0AKgAAAAgAAwEOAAIAAABXAAAAMgESAAMAAAABAAEAAIdpAAQAAAABAAAAigAAAABQaWN0dXJlIHByb2ZpbGUgaWNvbi4gTWFsZSBpY29uLiBIdW1hbiBvciBwZW9wbGUgc2lnbiBhbmQgc3ltYm9sLiBWZWN0b3IgaWxsdXN0cmF0aW9uLgAAAAKQAAAHAAAABDAyMzGgAQADAAAAAf//AAAAAAAA/+ETU2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9IkRCN0Q3MEEwQTk0OTY2NTE2OTQ0RkZCNjExNDQ1NjA4IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9IkRCN0Q3MEEwQTk0OTY2NTE2OTQ0RkZCNjExNDQ1NjA4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBiYmVmMzY1LTNjY2ItNTg0ZS1iODYxLTk5NzA5NTliNWM2ZCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA5LTE3VDIwOjA5OjUyKzA3OjAwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NGFmNDRhNWYtOWEyMC1kMzQzLWI5YjAtN2VkOWM4Y2NmYjVhIiBzdEV2dDp3aGVuPSIyMDIwLTA5LTE3VDIwOjA5OjUyKzA3OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ2FtZXJhIFJhdyAxMi40IiBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjBiYmVmMzY1LTNjY2ItNTg0ZS1iODYxLTk5NzA5NTliNWM2ZCIgc3RFdnQ6d2hlbj0iMjAyMC0wOS0xN1QyMDowOTo1MiswNzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENhbWVyYSBSYXcgMTIuNCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPGRjOmRlc2NyaXB0aW9uPiA8cmRmOkFsdD4gPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5QaWN0dXJlIHByb2ZpbGUgaWNvbi4gTWFsZSBpY29uLiBIdW1hbiBvciBwZW9wbGUgc2lnbiBhbmQgc3ltYm9sLiBWZWN0b3IgaWxsdXN0cmF0aW9uLjwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6ZGVzY3JpcHRpb24+IDxkYzpzdWJqZWN0PiA8cmRmOkJhZz4gPHJkZjpsaT5wcm9maWxlPC9yZGY6bGk+IDxyZGY6bGk+Ymxhbms8L3JkZjpsaT4gPHJkZjpsaT5waWM8L3JkZjpsaT4gPHJkZjpsaT5waWN0dXJlPC9yZGY6bGk+IDxyZGY6bGk+aGVhZDwvcmRmOmxpPiA8cmRmOmxpPmljb248L3JkZjpsaT4gPHJkZjpsaT50aHVtYm5haWw8L3JkZjpsaT4gPHJkZjpsaT5waG90b2dyYXBoPC9yZGY6bGk+IDxyZGY6bGk+dmVjdG9yPC9yZGY6bGk+IDxyZGY6bGk+YW5vbnltb3VzPC9yZGY6bGk+IDxyZGY6bGk+YXZhdGFyPC9yZGY6bGk+IDxyZGY6bGk+Y29udGVudDwvcmRmOmxpPiA8cmRmOmxpPmRlZmF1bHQ8L3JkZjpsaT4gPHJkZjpsaT5kZXNpZ248L3JkZjpsaT4gPHJkZjpsaT5kaWdpdGFsPC9yZGY6bGk+IDxyZGY6bGk+ZGlzcGxheTwvcmRmOmxpPiA8cmRmOmxpPmVsZW1lbnQ8L3JkZjpsaT4gPHJkZjpsaT5mYWNlbGVzczwvcmRmOmxpPiA8cmRmOmxpPmZpbG08L3JkZjpsaT4gPHJkZjpsaT5mcmFtZTwvcmRmOmxpPiA8cmRmOmxpPmdyYXBoaWM8L3JkZjpsaT4gPHJkZjpsaT5ncmF5PC9yZGY6bGk+IDxyZGY6bGk+Z3V5PC9yZGY6bGk+IDxyZGY6bGk+aHVtYW48L3JkZjpsaT4gPHJkZjpsaT5pbGx1c3RyYXRpb248L3JkZjpsaT4gPHJkZjpsaT5pbWFnZTwvcmRmOmxpPiA8cmRmOmxpPmludGVybmV0PC9yZGY6bGk+IDxyZGY6bGk+bWFsZTwvcmRmOmxpPiA8cmRmOmxpPm1hbjwvcmRmOmxpPiA8cmRmOmxpPm1lbWJlcjwvcmRmOmxpPiA8cmRmOmxpPm11bHRpbWVkaWE8L3JkZjpsaT4gPHJkZjpsaT5uZXR3b3JrPC9yZGY6bGk+IDxyZGY6bGk+b3V0bGluZTwvcmRmOmxpPiA8cmRmOmxpPnBhZ2U8L3JkZjpsaT4gPHJkZjpsaT5wZW9wbGU8L3JkZjpsaT4gPHJkZjpsaT5wZXJzb248L3JkZjpsaT4gPHJkZjpsaT5waG90bzwvcmRmOmxpPiA8cmRmOmxpPnBob3RvZ3JhcGhlcjwvcmRmOmxpPiA8cmRmOmxpPnBob3RvZ3JhcGhpYzwvcmRmOmxpPiA8cmRmOmxpPnBob3RvZ3JhcGh5PC9yZGY6bGk+IDxyZGY6bGk+cG9ydHJhaXQ8L3JkZjpsaT4gPHJkZjpsaT5zaWduPC9yZGY6bGk+IDxyZGY6bGk+c2lsaG91ZXR0ZTwvcmRmOmxpPiA8cmRmOmxpPnNvY2lhbDwvcmRmOmxpPiA8cmRmOmxpPnN5bWJvbDwvcmRmOmxpPiA8cmRmOmxpPnN5bWJvbGljPC9yZGY6bGk+IDxyZGY6bGk+dXBsb2FkaW5nPC9yZGY6bGk+IDxyZGY6bGk+dXNlcjwvcmRmOmxpPiA8cmRmOmxpPndlYnNpdGU8L3JkZjpsaT4gPHJkZjpsaT53aG88L3JkZjpsaT4gPC9yZGY6QmFnPiA8L2RjOnN1YmplY3Q+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+UGljdHVyZSBwcm9maWxlIGljb24uIE1hbGUgaWNvbi4gSHVtYW4gb3IgcGVvcGxlIHNpZ24gYW5kIHN5bWJvbC4gVmVjdG9yLjwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwvZGM6dGl0bGU+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+
final femaleDefaultImage =
'/9j/4AAQSkZJRgABAgAAZABkAAD/4QC4RXhpZgAATU0AKgAAAAgAAwEOAAIAAABgAAAAMgESAAMAAAABAAEAAIdpAAQAAAABAAAAkgAAAABXb21hbiBpY29uIGZvciB1c2VyIHByb2ZpbGUuIEZlbWFsZSBpY29uLiBIdW1hbiBvciBwZW9wbGUgc2lnbiBhbmQgc3ltYm9sLiBWZWN0b3IgaWxsdXN0cmF0aW9uLgAAApAAAAcAAAAEMDIzMaABAAMAAAAB//8AAAAAAAD/4RNyaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0MCA3OS4xNjA0NTEsIDIwMTcvMDUvMDYtMDE6MDg6MjEgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0iRTY5MzkzQjVGMjkxNjlCREE1RDU3RjU2RDJGQTdGMzciIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0iRTY5MzkzQjVGMjkxNjlCREE1RDU3RjU2RDJGQTdGMzciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N2ZhOTg3NTctYzI4NS04OTRlLTljNjQtYzBkY2M2N2QxZGNmIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHhtcDpNZXRhZGF0YURhdGU9IjIwMjAtMDktMTdUMjE6MDU6NDArMDc6MDAiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpmYTIwZWZmYi1mYThkLTZkNDEtOTBiMS00OThmMDVmNWE3NDIiIHN0RXZ0OndoZW49IjIwMjAtMDktMTdUMjE6MDU6NDArMDc6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDYW1lcmEgUmF3IDEyLjQiIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6N2ZhOTg3NTctYzI4NS04OTRlLTljNjQtYzBkY2M2N2QxZGNmIiBzdEV2dDp3aGVuPSIyMDIwLTA5LTE3VDIxOjA1OjQwKzA3OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ2FtZXJhIFJhdyAxMi40IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iL21ldGFkYXRhIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8ZGM6ZGVzY3JpcHRpb24+IDxyZGY6QWx0PiA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPldvbWFuIGljb24gZm9yIHVzZXIgcHJvZmlsZS4gRmVtYWxlIGljb24uIEh1bWFuIG9yIHBlb3BsZSBzaWduIGFuZCBzeW1ib2wuIFZlY3RvciBpbGx1c3RyYXRpb24uPC9yZGY6bGk+IDwvcmRmOkFsdD4gPC9kYzpkZXNjcmlwdGlvbj4gPGRjOnN1YmplY3Q+IDxyZGY6QmFnPiA8cmRmOmxpPmFic3RyYWN0PC9yZGY6bGk+IDxyZGY6bGk+YWRtaW5pc3RyYXRvcjwvcmRmOmxpPiA8cmRmOmxpPmFzc29jaWF0ZTwvcmRmOmxpPiA8cmRmOmxpPmF2YXRhcjwvcmRmOmxpPiA8cmRmOmxpPmJhY2tncm91bmQ8L3JkZjpsaT4gPHJkZjpsaT5idXNpbmVzczwvcmRmOmxpPiA8cmRmOmxpPmJ1c2luZXNzbWFuPC9yZGY6bGk+IDxyZGY6bGk+Y3VzdG9tZXI8L3JkZjpsaT4gPHJkZjpsaT5kZWZhdWx0PC9yZGY6bGk+IDxyZGY6bGk+ZW1wbG95ZWU8L3JkZjpsaT4gPHJkZjpsaT5lbXBsb3llcjwvcmRmOmxpPiA8cmRmOmxpPmZlbWFsZTwvcmRmOmxpPiA8cmRmOmxpPmZpZ3VyZTwvcmRmOmxpPiA8cmRmOmxpPmZyaWVuZDwvcmRmOmxpPiA8cmRmOmxpPmdpcmw8L3JkZjpsaT4gPHJkZjpsaT5ncmFwaGljPC9yZGY6bGk+IDxyZGY6bGk+Z3V5PC9yZGY6bGk+IDxyZGY6bGk+aHVtYW48L3JkZjpsaT4gPHJkZjpsaT5pY29uPC9yZGY6bGk+IDxyZGY6bGk+aWxsdXN0cmF0aW9uPC9yZGY6bGk+IDxyZGY6bGk+aW1hZ2U8L3JkZjpsaT4gPHJkZjpsaT5pbnRlcm5ldDwvcmRmOmxpPiA8cmRmOmxpPmlzb2xhdGVkPC9yZGY6bGk+IDxyZGY6bGk+bGVhZGVyPC9yZGY6bGk+IDxyZGY6bGk+bG9nbzwvcmRmOmxpPiA8cmRmOmxpPm1hbGU8L3JkZjpsaT4gPHJkZjpsaT5tYW48L3JkZjpsaT4gPHJkZjpsaT5tYW5hZ2VyPC9yZGY6bGk+IDxyZGY6bGk+bWVtYmVyPC9yZGY6bGk+IDxyZGY6bGk+bXVsdGltZWRpYTwvcmRmOmxpPiA8cmRmOmxpPm5ldHdvcms8L3JkZjpsaT4gPHJkZjpsaT5wZW9wbGU8L3JkZjpsaT4gPHJkZjpsaT5wZXJzb248L3JkZjpsaT4gPHJkZjpsaT5waG90bzwvcmRmOmxpPiA8cmRmOmxpPnBob3RvZ3JhcGg8L3JkZjpsaT4gPHJkZjpsaT5waG90b2dyYXBoZXI8L3JkZjpsaT4gPHJkZjpsaT5waG90b2dyYXBoeTwvcmRmOmxpPiA8cmRmOmxpPnBpY3R1cmU8L3JkZjpsaT4gPHJkZjpsaT5wb3J0cmFpdDwvcmRmOmxpPiA8cmRmOmxpPnByb2ZpbGU8L3JkZjpsaT4gPHJkZjpsaT5zaGFwZTwvcmRmOmxpPiA8cmRmOmxpPnNpZ248L3JkZjpsaT4gPHJkZjpsaT5zb2NpYWw8L3JkZjpsaT4gPHJkZjpsaT5zeW1ib2w8L3JkZjpsaT4gPHJkZjpsaT5zeW1ib2xpYzwvcmRmOmxpPiA8cmRmOmxpPnVzZXI8L3JkZjpsaT4gPHJkZjpsaT52ZWN0b3I8L3JkZjpsaT4gPHJkZjpsaT53ZWI8L3JkZjpsaT4gPHJkZjpsaT53ZWJzaXRlPC9yZGY6bGk+IDxyZGY6bGk+d29tYW48L3JkZjpsaT4gPC9yZGY6QmFnPiA8L2RjOnN1YmplY3Q+IDxkYzp0aXRsZT4gPHJkZjpBbHQ+IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+V29tYW4gaWNvbiBmb3IgdXNlciBwcm9maWxlLiBGZW1hbGUgaWNvbi4gSHVtYW4gb3IgcGVvcGxlIHNpZ24gYW5kIHN5bWJvbC4gVmVjdG9yLjwvcmRmOmxpPiA8L3JkZjpBbHQ+IDwv
}