Firebase 在给定场景中,为什么变量值没有从null更新为最新值?

Firebase 在给定场景中,为什么变量值没有从null更新为最新值?,firebase,flutter,dart,google-cloud-firestore,firebase-storage,Firebase,Flutter,Dart,Google Cloud Firestore,Firebase Storage,我正在进行一个项目,希望将文件上载到firebase存储并将该url添加到firestore。我可以将变量urlDownload的更新值打印到控制台,但无法将其发送到firestore,相反,firestore中的相应字段显示空值。我知道我基本上做错了什么,请帮我弄清楚 下面是代码的链接。主要观察第11,94128行中提到的变量urlDownload。 。 . 类_MainPageState扩展状态{ 上传任务?任务; 文件?文件; 字符串?下载; 列表类型=[ . . onPressed:(

我正在进行一个项目,希望将文件上载到firebase存储并将该url添加到firestore。我可以将变量
urlDownload
的更新值打印到控制台,但无法将其发送到firestore,相反,firestore中的相应字段显示空值。我知道我基本上做错了什么,请帮我弄清楚

下面是代码的链接。主要观察第11,94128行中提到的变量
urlDownload

。
.
类_MainPageState扩展状态{
上传任务?任务;
文件?文件;
字符串?下载;
列表类型=[
.
.
onPressed:()异步{
等待上传文件();
等待添加文件(
_namecontroller.text,
下拉值,
下载网址:,
);
},
.
.
未来上传文件()异步{
.
.
final urlDownload=wait snapshot.ref.getDownloadURL();
setState((){});
打印('Download-Link:$urlDownload');
}

您拼错了全局变量(
urlDownload
vs
urlDownload
)。您还在uploadFile函数中将下载url分配给本地变量。请尝试更正名称并删除第128行的
final
关键字


提示:您可以从uploadFile返回下载url,而不是将其设置为类范围的变量,因为您没有在其他任何地方使用它。我认为这会稍微降低复杂性。

您所问的代码中没有一个是使用Firestore做任何事的,因此不可能说出发生了什么问题。请确保所有代码重现问题所需的是问题本身,同时仍然保持最小。有关如何做的提示,请参阅。@FrankvanPuffelen谢谢。我修复了拼写并删除了final关键字,现在它正在工作。哈哈,我花了大约一个小时来做这个。谢谢。
.
.
class _MainPageState extends State<MainPage> {
  UploadTask? task;
  File? file;
  String? urlDownload;

  List<String> types = [
.
.
  onPressed: () async {
                await uploadFile();
                await addFile(
                  _namecontroller.text,
                  dropdownValue,
                  urlDownload,
                );
              },
.
.
 Future uploadFile() async {
    .
    .
    final urlDownload = await snapshot.ref.getDownloadURL();

    setState(() {});

    print('Download-Link: $urlDownload');
  }