Ваш код в методе getVersion выполняется асинхронно. Означает, что функция возвратит путь до того, как ваше предложение then будет вызвано / выполнено, таким образом, оно возвращает нулевое значение и приводит к ошибке нулевого значения.
Если ваш пользовательский интерфейс зависит от использования в будущем FutureBuilder . Замените текстовый виджет следующим кодом:
FutureBuilder<String>(
future: getVersion(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data);
} else if (snapshot.hasError) {
return Text('Oh no!!!');
} else {
return CircularProgressIndicator()
},
},
),
и измените метод getVersion следующим образом:
Future<String> getVersion() async {
PackageInfo pi = await getPackageInfo();
return pi.version;
}