Skip to content

Commit

Permalink
feat: qr view for excuting recipe
Browse files Browse the repository at this point in the history
  • Loading branch information
AhsanRns committed May 28, 2024
1 parent 3a6a4b6 commit 78c372a
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 7 deletions.
29 changes: 29 additions & 0 deletions wallet/lib/model/event.dart
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,35 @@ class Events extends Equatable {
this.owner = '',
});

Map<String, dynamic> toJson() {
final Map<String, dynamic> map = <String, dynamic>{};

final perks = [];

listOfPerks?.map((e) => perks.add(e.toJson())).toList();

map['id'] = id;
map['recipeID'] = recipeID;
map['eventName'] = eventName;
map['hostName'] = hostName;
map['thumbnail'] = thumbnail;
map['startDate'] = startDate;
map['endDate'] = endDate;
map['startTime'] = startTime;
map['endTime'] = endTime;
map['location'] = location;
map['description'] = description;
map['numberOfTickets'] = numberOfTickets;
map['price'] = price;
map['isFreeDrops'] = isFreeDrops;
map['cookbookID'] = cookbookID;
map['step'] = step;
map['denom'] = denom.toString();
map['listOfPerks'] = perks;

return map;
}

Future<String> getOwnerAddress() async {
if (ownerAddress.isEmpty) {
final walletsStore = GetIt.I.get<WalletsStore>();
Expand Down
1 change: 1 addition & 0 deletions wallet/lib/pages/events/event_purchase_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ class EventPassViewContent extends StatelessWidget {
Container(
margin: EdgeInsets.symmetric(horizontal: 20.w),
child: CachedNetworkImage(
width: double.infinity,
fit: BoxFit.fill,
imageUrl: events.thumbnail,
errorWidget: (a, b, c) => const Center(
Expand Down
85 changes: 82 additions & 3 deletions wallet/lib/pages/events/event_qr_code_screen.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
import 'dart:convert';

import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:pylons_wallet/components/buttons/custom_paint_button.dart';
import 'package:pylons_wallet/gen/assets.gen.dart';
import 'package:pylons_wallet/generated/locale_keys.g.dart';
import 'package:pylons_wallet/model/event.dart';
import 'package:pylons_wallet/pages/detailed_asset_view/widgets/nft_image_asset.dart';
import 'package:pylons_wallet/utils/constants.dart';
import 'package:qr_flutter/qr_flutter.dart';

const jsonExecuteRecipe = '''
{
Expand All @@ -15,11 +25,80 @@ const jsonExecuteRecipe = '''
''';
final jsonMap = jsonDecode(jsonExecuteRecipe) as Map;

class EventQrCodeScreen extends StatelessWidget {
const EventQrCodeScreen({super.key});
class EventQrCodeScreen extends StatefulWidget {
const EventQrCodeScreen({
super.key,
required this.events,
});

final Events events;

@override
State<EventQrCodeScreen> createState() => _EventQrCodeScreenState();
}

class _EventQrCodeScreenState extends State<EventQrCodeScreen> {
GlobalKey renderObjectKey = GlobalKey();

@override
Widget build(BuildContext context) {
return const Placeholder();
return Material(
color: AppColors.kBlack,
child: Stack(
children: [
NftImageWidget(
url: widget.events.thumbnail,
opacity: 0.5,
),
Padding(
padding: EdgeInsets.only(left: 23.w, top: MediaQuery.of(context).viewPadding.top + 13.h),
child: GestureDetector(
onTap: () async {
Navigator.pop(context);
},
child: SvgPicture.asset(
Assets.images.icons.back,
height: 25.h,
),
),
),
ColoredBox(
color: AppColors.kBlack.withOpacity(0.5),
child: Align(
child: RepaintBoundary(
key: renderObjectKey,
child: QrImageView(
padding: EdgeInsets.zero,
data: jsonEncode(widget.events),
size: 200,
dataModuleStyle: const QrDataModuleStyle(color: AppColors.kWhite),
eyeStyle: const QrEyeStyle(eyeShape: QrEyeShape.square, color: AppColors.kWhite),
),
),
),
),
Align(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 20.w),
child: SvgPicture.asset(Assets.images.svg.qrSideBorder),
),
),
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: EdgeInsets.only(bottom: 30.h),
child: CustomPaintButton(
title: LocaleKeys.done.tr(),
bgColor: AppColors.kWhite.withOpacity(0.3),
width: 280.w,
onPressed: () {
Navigator.pop(context);
},
),
),
)
],
),
);
}
}
20 changes: 16 additions & 4 deletions wallet/lib/pages/events/events_owner_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:get_it/get_it.dart';
import 'package:provider/provider.dart';
import 'package:pylons_wallet/components/space_widgets.dart';
import 'package:pylons_wallet/gen/assets.gen.dart';
import 'package:pylons_wallet/model/event.dart';
import 'package:pylons_wallet/pages/detailed_asset_view/owner_view_view_model.dart';
import 'package:pylons_wallet/pages/events/event_qr_code_screen.dart';
import 'package:pylons_wallet/pages/home/currency_screen/model/ibc_coins.dart';
import 'package:pylons_wallet/utils/constants.dart';

Expand Down Expand Up @@ -205,10 +207,20 @@ class EventPassViewContent extends StatelessWidget {
// placeholder: (context, url) => Shimmer(color: AppColors.kLightGray, child: const SizedBox.expand()),
),
),




GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (_) => EventQrCodeScreen(
events: viewModel.events,
),
);
},
child: SvgPicture.asset(
Assets.images.icons.qr,
height: 20.h,
),
),
],
),
),
Expand Down

0 comments on commit 78c372a

Please sign in to comment.