在iOS上进行调试时,Flutter失去了与设备的连接

时间:2020-09-14 18:27:28

标签: ios firebase flutter dart

这是我的按钮代码

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上不工作。

谢谢。

0 个答案:

没有答案