Проблема с флаттером / дротиком - вернуть информацию, необходимую для предотвращения повторной загрузки файлов? - PullRequest
1 голос
/ 01 августа 2020

У меня есть кнопка, которая загружает файл на сервер и возвращает oldname файла. Перед загрузкой я хочу проверить, был ли уже загружен файл. Но, к сожалению, проблема с областью видимости, и переменная oldname всегда возвращает значение null, даже если предыдущая загрузка была успешной. Вот код:

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

Ответы [ 2 ]

2 голосов
/ 01 августа 2020

Ваша проблема в том, что oldname всегда будет null, так как его инициализация String oldname выполняется в том же методе сборки.

Переместите String oldname над функцией сборки виджета

1 голос
/ 01 августа 2020
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"),
    );
  }
}
...