我在 Flutterflow(一个在 iOS 和 Android 上使用 Flutter 构建应用程序的平台)上运行的 Dart 中有这个自定义函数
import '/backend/backend.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/index.dart';
import '/flutter_flow/custom_functions.dart';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
Future<void> updateBalanceAndPointPremium(String documentId) async {
try {
final DocumentReference userDocRef =
FirebaseFirestore.instance.collection('users').doc(documentId);
final DocumentSnapshot snapshot = await userDocRef.get();
if (snapshot.exists) {
final data = snapshot.data() as Map<String, dynamic>;
final double point = data['Point'] ?? 0.0;
final double balance = data['Balance'] ?? 0.0;
final int balanceTimes = data['balanceConvertTimes'] ?? 0;
double updatedBalance = balance;
int updatedBalanceTimes = balanceTimes;
// Calculate the number of times the balance should be increased by 15
int increaseCount = ((point ~/ 50) - balanceTimes);
if (increaseCount > 0) {
updatedBalance += increaseCount * 15;
updatedBalanceTimes += increaseCount;
}
final updateData = {
'Balance': updatedBalance,
'balanceConvertTimes': updatedBalanceTimes
};
await userDocRef.update(updateData);
print('Balance field updated successfully!');
}
} catch (e) {
print('Error updating balance field: $e');
}
}
目的是当 Firebase 上输入 documentID 的用户的 Point 数据达到阈值 50、100、150...时,将其 Balance 数据添加 15。 该代码在测试模式下运行良好(我正在使用 Flutterflow - 一个使用 Dart 构建应用程序的应用程序),但是当我通过 Codemagic 将应用程序提交到 App Store 和 Google Play 商店时,它不起作用(余额数据自动添加 15 作为预期)在 Testflight 上运行的构建和批准的 App store 应用程序上。 所以我真的不知道为什么会发生这种情况。 请帮忙。非常感谢。
我尝试将此函数放入另一个函数中,该函数在测试模式和实际构建中都运行良好。 新版本中的组合功能仍然无法工作(即使它在测试模式下仍然有效)。 新代码如下:
import '/backend/backend.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/index.dart'; // Imports other custom actions
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
Future<void> addPointandBalancePremium(
String documentId, double amountToAdd) async {
try {
final DocumentReference userDocRef =
FirebaseFirestore.instance.collection('users').doc(documentId);
await FirebaseFirestore.instance.runTransaction((transaction) async {
final DocumentSnapshot snapshot = await transaction.get(userDocRef);
if (snapshot.exists) {
final data = snapshot.data() as Map<String, dynamic>;
final currentAmount = data['Point'] ?? 0.0;
final double balance = data['Balance'] ?? 0.0;
final int balanceTimes = data['balanceConvertTimes'] ?? 0;
double updatedBalance = balance;
int updatedBalanceTimes = balanceTimes;
var currentDist = data['pointToNextReward'] ?? 0.0;
var currentDistFree = data['pointToNextRewardFree'] ?? 0.0;
final newAmount = currentAmount + (0.2 * amountToAdd / 100);
var newDist = 50 - (0.2 * amountToAdd / 100 - currentDist);
var newDistFree = 100 - (0.2 * amountToAdd / 100 - currentDistFree);
int increaseCount = ((newAmount ~/ 50) - balanceTimes);
if (increaseCount > 0) {
updatedBalance += increaseCount * 15;
updatedBalanceTimes += increaseCount;
}
currentDist = newDist;
if (newDist >= 50) {
currentDist = newDist - 50;
}
;
currentDistFree = newDistFree;
if (newDistFree >= 100) {
currentDistFree = newDistFree - 100;
}
;
transaction.update(userDocRef, {
'Point': newAmount,
'pointToNextReward': currentDist,
'pointToNextRewardFree': currentDistFree,
'Balance': updatedBalance,
'balanceConvertTimes': updatedBalanceTimes
});
}
});
print('Point and Balance fields updated successfully!');
} catch (e) {
print('Error updating Point field: $e');
}
}
Flutterflow 上的测试模式一切正常,但在实际构建中却不行。 这让我真的很困惑和困惑。
在 Flutterflow 中发布到网络,然后检查控制台。
当我在自定义函数中使用自定义函数时,我遇到了同样的问题。在测试模式下一切正常,但在真实设备上用户界面没有更新。 我解决问题的方法 1.我创建了一个页面/组件状态并存储了自定义函数内部使用的自定义函数的返回值。 2.在自定义函数中,我使用了步骤 1 中使用的值页面/组件状态。
希望它有帮助,并让我知道你是如何解决问题的