这是我的按钮代码
RaisedButton(
elevation: 0,
focusElevation: 0,
textColor: Colors.white,
child: Text('Save', style: Theme.of(context).textTheme.headline3.copyWith(
color: Colors.white
),),
onPressed: () async {
setState(() {
showSpinner = true;
});
try {
await _saveActivity(store, _rideStore, _userStore);
setState(() {
showSpinner = false;
});
print('return from _saveActivity');
Navigator.pushNamedAndRemoveUntil(context, HomePage.id, (route) => true);
}
catch(e) {
print(e);
setState(() {
showSpinner = false;
});
}
},
)
这是保存活动方法
Future<dynamic> _saveActivity(store, rideStore, userStore) async {
StopWatch().stop();
String postId = Uuid().v1();
// await compressImage(images, postId);
print('callling UploadImage method');
List<String> mediaList;
print('images $images');
if (images.length > 0 ) {
mediaList = await uploadImage(images, postId);
}
else {
mediaList = [];
}
print('_saveActivity');
print('_saveActivity mediaList - $mediaList');
User currentUser = _authService.getCurrentUser();
final String currentUserUid = currentUser.uid;
final String currentUserEmail = currentUser.providerData[0].email;
CollectionReference userRef = _firestore.collection('User');
QuerySnapshot userSnapshot = await userRef.where('email', isEqualTo: currentUserEmail).get();
print('userSnapshot - ${currentUser.providerData[0].email}');
final uid = currentUserUid;
// print('_saveActivity');
// print('totalDistance - ${store.totalDistance}');
// print('distance - ${store.distance}');
// print(store.elevationList);
// print(store.elevationGain);
// print(store.maxElevation);
List<GeoPoint> positions = [];
for (var location in store.locationsArr) {
positions.add(GeoPoint(location[0].toDouble(), location[1].toDouble()));
}
await _firestore.collection('Trips').doc(userSnapshot.docs[0].id).collection('usersTrip').doc(postId).set({
'title': title,
'description': description,
'activityType': dropdownValue,
'user_id': uid,
'image_url': mediaList,
'distance': store.distance,
'startedAt': store.startTimestamp,
'elevation': store.elevation.toStringAsFixed(2),
'stoppedAt': store.stopTimestamp,
'maxSpeed': store.maxSpeed,
'avgSpeed': store.avgSpeed,
'elevationGain': store.elevationGain,
'maxElevation': store.maxElevation,
'movingTime': rideStore.formattedMovingTime,
'email': currentUserEmail,
'likes': {},
'postId': postId,
'ownerId': userStore.currentUserDocumentId,
'positions': FieldValue.arrayUnion(positions),
'data': FieldValue.arrayUnion(store.tripData)
});
// activity save, show play button again
rideStore.isStarted = false;
return;
}
上传图片方法。
Future<List<String>> uploadImage(images, postId) async {
print('uploadImage');
List<String> downloadUrlList = [];
for (var i = 0; i < images.length; i++) {
print('uploadImage for ${images[i]}');
ByteData byteData = await images[i].getByteData(); // requestOriginal is being deprecated
List<int> imageData = byteData.buffer.asUint8List();
StorageReference ref = storageRef.child('post_${postId}_$i.jpg'); // To be aligned with the latest firebase API(4.0)
StorageUploadTask uploadTask = ref.putData(imageData);
// StorageUploadTask uploadTask = storageRef.child('post_${postId}_$i.jpg').putData(imageData);
StorageTaskSnapshot storageSnap = await uploadTask.onComplete;
String downloadUrl = await storageSnap.ref.getDownloadURL();
downloadUrlList.add(downloadUrl);
}
print('uploadImage $downloadUrlList');
return downloadUrlList;
}
当我在单击按钮上评论_saveActivity(store,_rideStore,_userStore)行时成功重定向到主页,但是当我取消注释时,数据正在保存到firebase,但没有重定向到主页并且应用程序崩溃。 / p>
相同的代码在android上正常工作,但在IOS上不工作。
谢谢。