Skip to content

Commit

Permalink
Merge pull request #166 from takenet/feature/371730-send-receive-loca…
Browse files Browse the repository at this point in the history
…lization

Feature/371730 send receive localization
  • Loading branch information
RaulRodrigo06 authored Jul 17, 2023
2 parents ad11108 + 61febdc commit e4144da
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/blip_ds.dart
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ export 'src/widgets/chat/ds_file_message_bubble.widget.dart'
show DSFileMessageBubble;
export 'src/widgets/chat/ds_image_message_bubble.widget.dart'
show DSImageMessageBubble;
export 'src/widgets/chat/ds_location_message_bubble.widget.dart'
show DSLocationMessageBubble;
export 'src/widgets/chat/ds_message_bubble.widget.dart' show DSMessageBubble;
export 'src/widgets/chat/ds_message_bubble_detail.widget.dart'
show DSMessageBubbleDetail;
Expand Down
1 change: 1 addition & 0 deletions lib/src/utils/ds_message_content_type.util.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ abstract class DSMessageContentType {
static const String collection = 'application/vnd.lime.collection+json';
static const String ticket = 'application/vnd.iris.ticket+json';
static const String contact = 'application/vnd.lime.contact+json';
static const String location = 'application/vnd.lime.location+json';
}
104 changes: 104 additions & 0 deletions lib/src/widgets/chat/ds_location_message_bubble.widget.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import 'package:flutter/material.dart';
import 'package:map_launcher/map_launcher.dart';

import '../../enums/ds_align.enum.dart';
import '../../models/ds_message_bubble_style.model.dart';
import '../../themes/colors/ds_colors.theme.dart';
import '../animations/ds_spinner_loading.widget.dart';
import '../texts/ds_body_text.widget.dart';
import '../utils/ds_cached_network_image_view.widget.dart';
import 'ds_message_bubble.widget.dart';

class DSLocationMessageBubble extends StatelessWidget {
final DSAlign align;
final DSMessageBubbleStyle style;
final String? title;
final double latitude;
final double longitude;

DSLocationMessageBubble({
super.key,
required this.align,
required this.latitude,
required this.longitude,
DSMessageBubbleStyle? style,
this.title,
}) : style = style ?? DSMessageBubbleStyle();

final appKey = 'AIzaSyAlC3a3DZZBscR0QIbQpee13Op9Y05m_wc';

@override
Widget build(BuildContext context) {
final foregroundColor = style.isLightBubbleBackground(align)
? DSColors.neutralDarkCity
: DSColors.neutralLightSnow;

return GestureDetector(
onTap: () async {
final availableMaps = await MapLauncher.installedMaps;

await availableMaps.first.showMarker(
coords: Coords(latitude, longitude),
title: "Ocean Beach",
);
},
child: DSMessageBubble(
shouldUseDefaultSize: true,
defaultMaxSize: 240.0,
defaultMinSize: 240.0,
padding: EdgeInsets.zero,
align: align,
style: style,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
DSCachedNetworkImageView(
url:
'https://maps.googleapis.com/maps/api/staticmap?&size=360x360&markers=$latitude,$longitude&key=$appKey',
placeholder: (_, __) => _buildLoading(),
align: align,
style: style,
),
if (title?.isNotEmpty ?? false)
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16.0,
vertical: 8.0,
),
child: Align(
alignment: Alignment.topLeft,
child: DSBodyText(
title!,
color: foregroundColor,
isSelectable: true,
overflow: TextOverflow.visible,
),
),
),
],
),
),
);
}

Widget _buildLoading() => Column(
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: const EdgeInsets.symmetric(
vertical: 8.0,
),
child: Center(
child: DSSpinnerLoading(
color: style.isLightBubbleBackground(align)
? DSColors.primaryNight
: DSColors.neutralLightSnow,
size: 32.0,
lineWidth: 4.0,
),
),
),
],
);
}
9 changes: 9 additions & 0 deletions lib/src/widgets/utils/ds_card.widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import '../chat/ds_carrousel.widget.dart';
import '../chat/ds_contact_message_bubble.widget.dart';
import '../chat/ds_file_message_bubble.widget.dart';
import '../chat/ds_image_message_bubble.widget.dart';
import '../chat/ds_location_message_bubble.widget.dart';
import '../chat/ds_quick_reply.widget.dart';
import '../chat/ds_text_message_bubble.widget.dart';
import '../chat/ds_unsupported_content_message_bubble.widget.dart';
Expand Down Expand Up @@ -97,6 +98,14 @@ class DSCard extends StatelessWidget {
style: style,
);

case DSMessageContentType.location:
return DSLocationMessageBubble(
title: content['text'],
latitude: content['latitude'],
longitude: content['longitude'],
align: align,
style: style,
);
case DSMessageContentType.ticket:
return DSTicketMessage(
messageType: DSTicketMessageType.forwardedTicket,
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ dependencies:
intl_phone_number_input: ^0.7.3+1
mask_text_input_formatter: ^2.4.0
dotted_border: ^2.0.0+3
map_launcher: ^2.5.0+1

dev_dependencies:
flutter_test:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,11 @@ class SampleMessageBubbleShowcase extends StatelessWidget {
DSSurveyMessageBubble(
align: DSAlign.center,
),
DSLocationMessageBubble(
align: DSAlign.left,
latitude: 47.5951518,
longitude: 122.3316393,
),
],
),
);
Expand Down

0 comments on commit e4144da

Please sign in to comment.