Camera/QR code の双方のコードを置いている。切り替えはまだ
This commit is contained in:
@ -617,18 +617,124 @@ class StartRogaining extends StatelessWidget {
|
|||||||
// 完了ボタンをタップすると、購入ポイントの処理が行われます。
|
// 完了ボタンをタップすると、購入ポイントの処理が行われます。
|
||||||
// 購入なしボタンをタップすると、購入ポイントがキャンセルされます。
|
// 購入なしボタンをタップすると、購入ポイントがキャンセルされます。
|
||||||
//
|
//
|
||||||
class BuyPointCamera extends StatefulWidget {
|
class BuyPointCamera extends StatelessWidget {
|
||||||
final Destination destination;
|
BuyPointCamera({Key? key, required this.destination}) : super(key: key);
|
||||||
|
|
||||||
const BuyPointCamera({Key? key, required this.destination}) : super(key: key);
|
Destination destination;
|
||||||
|
|
||||||
|
DestinationController destinationController =
|
||||||
|
Get.find<DestinationController>();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_BuyPointCameraState createState() => _BuyPointCameraState();
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
automaticallyImplyLeading: false,
|
||||||
|
title: Text(
|
||||||
|
"${destination.sub_loc_id} : ${destination.name}",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Center(
|
||||||
|
child: Obx(
|
||||||
|
() => Container(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
height: 370,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
image: DecorationImage(
|
||||||
|
// 要修正:getReceiptImage関数の戻り値がnullの場合のエラーハンドリングが不十分です。適切なデフォルト画像を表示するなどの処理を追加してください。
|
||||||
|
//
|
||||||
|
image: getReceiptImage(), fit: BoxFit.cover)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(getTagText(true, destination.tags)),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
|
child: Wrap(
|
||||||
|
spacing: 16.0,
|
||||||
|
runSpacing: 8.0,
|
||||||
|
children: [
|
||||||
|
Obx(() => ElevatedButton(
|
||||||
|
onPressed: () {
|
||||||
|
destinationController.openCamera(context, destination);
|
||||||
|
},
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
shape: const CircleBorder(),
|
||||||
|
padding: const EdgeInsets.all(20),
|
||||||
|
backgroundColor: destinationController.photos.isEmpty
|
||||||
|
? Colors.red
|
||||||
|
: Colors.grey[300],
|
||||||
|
),
|
||||||
|
child: destinationController.photos.isEmpty
|
||||||
|
? const Text("撮影",
|
||||||
|
style: TextStyle(color: Colors.white))
|
||||||
|
: const Text("再撮影",
|
||||||
|
style: TextStyle(color: Colors.black)),
|
||||||
|
)),
|
||||||
|
ElevatedButton(
|
||||||
|
onPressed: () async {
|
||||||
|
await destinationController.cancelBuyPoint(destination);
|
||||||
|
Navigator.of(Get.context!).pop();
|
||||||
|
destinationController.rogainingCounted.value = true;
|
||||||
|
destinationController.skipGps = false;
|
||||||
|
destinationController.isPhotoShoot.value = false;
|
||||||
|
},
|
||||||
|
child: const Text("買い物なし")),
|
||||||
|
Obx(() => destinationController.photos.isNotEmpty
|
||||||
|
? ElevatedButton(
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
backgroundColor: Colors.red),
|
||||||
|
onPressed: () async {
|
||||||
|
await destinationController.makeBuyPoint(
|
||||||
|
destination,
|
||||||
|
destinationController.photos[0].path);
|
||||||
|
Get.back();
|
||||||
|
destinationController.rogainingCounted.value = true;
|
||||||
|
destinationController.skipGps = false;
|
||||||
|
destinationController.isPhotoShoot.value = false;
|
||||||
|
Get.snackbar("お買い物加点を行いました",
|
||||||
|
"${destination.sub_loc_id} : ${destination.name}",
|
||||||
|
backgroundColor: Colors.green,
|
||||||
|
colorText: Colors.white);
|
||||||
|
},
|
||||||
|
child: const Text("完了",
|
||||||
|
style: TextStyle(color: Colors.white)))
|
||||||
|
: Container())
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class _BuyPointCameraState extends State<BuyPointCamera> {
|
class BuyPointCamera_QR extends StatefulWidget {
|
||||||
|
final Destination destination;
|
||||||
|
|
||||||
|
const BuyPointCamera_QR({Key? key, required this.destination}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_BuyPointCamera_QRState createState() => _BuyPointCamera_QRState();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class _BuyPointCamera_QRState extends State<BuyPointCamera_QR> {
|
||||||
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
|
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
|
||||||
QRViewController? controller;
|
QRViewController? controller;
|
||||||
bool isQRScanned = false;
|
bool isQRScanned = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user