Flutter/Dart 范围问题 - Return 需要信息来防止重复文件上传?

Flutter/Dart Scope Problem - Return info needed to prevent Duplicate File Upload?

我有一个将文件上传到服务器的按钮和 returns 文件的 oldname。在上传之前,我想检查文件是否已经上传。但不幸的是,范围似乎有问题,即使上一次上传成功,oldname 变量也总是 returns null。这是代码;

    FlatButton(
            onPressed: () async {
             String oldname;
              if (oldname == null)  {
                   oldname = await uploadAudio(
                   currentuserid: currentuserid,
                   filepath: _current.path);                 
              } else {alertUpLoaded(context);}
            },        
          )

您的问题是 oldname 将始终是 null,因为它的初始化 String oldname 在同一构建方法中。

String oldname移动到小部件的构建函数上方

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);
  @override
  _MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
  String _oldName;

  @override
  Widget build(BuildContext context) {
    return FlatButton(
      onPressed: () async {
        if (_oldName == null) {
          _oldName = await uploadAudio(currentuserid: currentuserid, filepath: _current.path);
        } else {
          alertUpLoaded(context);
        }
      },
      child: Text("Press Me"),
    );
  }
}