Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振/省道范围问题-返回防止重复文件上载所需的信息?_Flutter_Dart_Scope_Return_Future - Fatal编程技术网

Flutter 颤振/省道范围问题-返回防止重复文件上载所需的信息?

Flutter 颤振/省道范围问题-返回防止重复文件上载所需的信息?,flutter,dart,scope,return,future,Flutter,Dart,Scope,Return,Future,我有一个按钮,可以将文件上传到服务器并返回文件的oldname。在上传之前,我想检查一下文件是否已经上传了。但不幸的是,范围似乎有问题,oldname变量总是返回null,即使上一次上传成功。这是代码 FlatButton( onPressed: () async { String oldname; if (oldname == null) { oldname = awa

我有一个按钮,可以将文件上传到服务器并返回文件的
oldname
。在上传之前,我想检查一下文件是否已经上传了。但不幸的是,范围似乎有问题,
oldname
变量总是返回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
移动到小部件的构建函数上方

您的问题是
oldname
将始终为
null
,因为它的初始化
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"),
    );
  }
}
字符串oldname
移动到小部件的构建函数上方

类MyHomePage扩展StatefulWidget{
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"),
    );
  }
}
MyHomePage({Key}):超级(Key:Key); @凌驾 _MyHomePageState createState()=>\u MyHomePageState(); } 类_MyHomePageState扩展状态{ 字符串_oldName; @凌驾 小部件构建(构建上下文){ 返回按钮( onPressed:()异步{ 如果(_oldName==null){ _oldName=wait uploadAudio(currentuserid:currentuserid,filepath:_current.path); }否则{ 警报(上下文); } }, 孩子:文本(“按我”), ); } }
类MyHomePage扩展StatefulWidget{
MyHomePage({Key}):超级(Key:Key);
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
字符串_oldName;
@凌驾
小部件构建(构建上下文){
返回按钮(
onPressed:()异步{
如果(_oldName==null){
_oldName=wait uploadAudio(currentuserid:currentuserid,filepath:_current.path);
}否则{
警报(上下文);
}
},
孩子:文本(“按我”),
);
}
}

对不起,我本来会选择你的HBS,但我在“setState(()=>\u oldName=val”上出错,因为返回类型“void”显然不是未来或字符串。是的,我不好。不需要调用setState。编辑了我的回答对不起,我本来会选择你的HBS,但在“setState(()=>\u oldName=val”上出错因为返回类型“void”显然不是future或string。是的,我的错。不需要调用setState。编辑了我的答案