首页 > 解决方案 > 局部变量'basename'在声明之前不能被引用/Flutter

问题描述

当我查看基本名称的官方文档时,我遇到了基本名称的问题,在我看来一切都“正常”。但它仍然在basename上显示错误。感谢您的时间!

错误 basename 错误:表达式不计算为函数,因此无法调用局部变量“basename”在声明之前无法引用。

代码片段

 Future uploadImageToFirebase(BuildContext context) async {

    String basename = basename(_imageFile.path);
    StorageReference firebaseStorageRef =
        FirebaseStorage.instance.ref().child('uploads/$basename');
    StorageUploadTask uploadTask = firebaseStorageRef.putFile(_imageFile);
    StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
    taskSnapshot.ref.getDownloadURL().then(
          (value) => print("Done: $value"),
        );
  }

上下文部分代码片段

  void addToFb() async {
    final User user = FirebaseAuth.instance.currentUser;
    ...

    dbRef.add({
    ...
    }).then((res) {
      isLoading = false;

      Navigator.pushReplacement(
        context,             <--- HERE I GOT AND ERROR
        MaterialPageRoute(builder: (context) => Home(uid: widget.uid)),
      );
    }).catchError(
  (err) {
    showDialog(
      context: context,      <--- HERE I GOT AND ERROR
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text("Error"),
          content: Text(err.message),
          actions: [
          ...
          ],
        );
      },
...
}

标签: flutterdart

解决方案


String basename = basename(_imageFile.path);

你用的是同一个名字。将变量的名称更改为其他名称,例如String _basename = basename(_imageFile.path);

你所做的基本上是“通过调用'basename'函数为变量'basename'设置一个值”。你能看到名字冲突吗?


推荐阅读