firebase - 上传到 Firebase 存储失败
问题描述
在运行下面的代码并调用方法 enableUpload() (按下按钮)后,首先我收到一个错误“列的子项不得包含任何空值。这很奇怪,因为如果文件为空,则已经有一个“if”。
其次 - 没有任何东西上传到存储中。
提前谢谢你。
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
static File image;
Future getImage() async {
var tempImage = await ImagePicker().getImage(source: ImageSource.gallery);
setState(() {
image = File(tempImage.path);
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(brightness: Brightness.dark),
home: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
image == null ? Text("pick image") : enableUpload(),
RaisedButton(onPressed: getImage),
],
));
}
Widget enableUpload() {
if (image == null) return CircularProgressIndicator();
ListView(
children: <Widget>[
Image.file(image),
RaisedButton(onPressed: () {
final StorageReference ref =
FirebaseStorage.instance.ref().child('images');
ref.putFile(image);
})
],
);
}
}
解决方案
对于您的第一个问题,您得到null
的是因为代码return
在ListView
. 所以你应该有:
Widget enableUpload() {
if (image == null) return CircularProgressIndicator();
return ListView(
//Rest of code
);
}
推荐阅读
- c++ - 如何在 QT Creator 上正确打开顶点和片段着色器
- javascript - 仅在页面加载完成时显示 Div
- go - 设置 Option 对象时不可变 setter 和传统 setter 的区别
- matlab - 当我使用 ODE(常微分方程)时,Matlab 没有给出结果
- hibernate - 将表达式的结果转换为标准 api
- java - 在另一个字符串中找到一个字符串的 Anagrams 的最佳算法
- php - grumphp + php-cs-fixer + git:如何配置
- algorithm - 以(最多 2)个连续的 1 块为行的二进制矩阵,计算其平方的迹线
- fullcalendar - Oracle Apex 上的完整日历
- r - 从较小的 data.tables 填充 data.table