Flutter _TypeError(类型'Future<String>'不是类型'Future<Widget>?'的子类型)
Flutter _TypeError (type 'Future<String>' is not a subtype of type 'Future<Widget>?')
Firebase 存储中有这样一张照片:
我想把这张照片放在一个专栏中。我写了这样的代码:
class MainScreen extends StatefulWidget {
@override
State<MainScreen> createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Container(
height: 200,
width: double.infinity,
decoration: BoxDecoration(
color: Colors.blueAccent,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(30),
bottomRight: Radius.circular(30),
),
),
child: Column(
children: [
FutureBuilder<Widget>(
future: downloadURLExample(),
builder: (BuildContext context, AsyncSnapshot<Widget> snapshot) {
if(snapshot.hasData)
return snapshot.data;
}
),
SizedBox(height: 10),
Text(
"Hello",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
],
),
),
]
);
}
}
Future<void> downloadURLExample() {
var downloadURL = FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
return downloadURL;
}
当我运行这段代码时,我得到这样的错误:
_TypeError (type 'Future<String>' is not a subtype of type 'Future<Widget>?')
我该如何解决这个问题?在此先感谢您的帮助。
我查看了其他线程,但没有解决方案。
我假设您想在 UI 中显示图像。
试试这个:
Future<Widget> downloadURLExample() async {
var downloadURL = await FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
return Image.network(downloadURL);
}
您收到此错误是因为您从 _downloadURLExample 方法返回 Future<String>
,但 FutureBuilder
小部件的 future
属性 的类型为 Future<Widget>
因此你会收到类型不匹配错误。
使用此代码
FutureBuilder<String>(
future: downloadURLExample(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if(snapshot.hasData)
return Image.network(snapshot.data);
}
),
Future<String> downloadURLExample() {
var downloadURL = FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
return downloadURL;
}
Firebase 存储中有这样一张照片:
我想把这张照片放在一个专栏中。我写了这样的代码:
class MainScreen extends StatefulWidget {
@override
State<MainScreen> createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Container(
height: 200,
width: double.infinity,
decoration: BoxDecoration(
color: Colors.blueAccent,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(30),
bottomRight: Radius.circular(30),
),
),
child: Column(
children: [
FutureBuilder<Widget>(
future: downloadURLExample(),
builder: (BuildContext context, AsyncSnapshot<Widget> snapshot) {
if(snapshot.hasData)
return snapshot.data;
}
),
SizedBox(height: 10),
Text(
"Hello",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
],
),
),
]
);
}
}
Future<void> downloadURLExample() {
var downloadURL = FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
return downloadURL;
}
当我运行这段代码时,我得到这样的错误:
_TypeError (type 'Future<String>' is not a subtype of type 'Future<Widget>?')
我该如何解决这个问题?在此先感谢您的帮助。
我查看了其他线程,但没有解决方案。
我假设您想在 UI 中显示图像。
试试这个:
Future<Widget> downloadURLExample() async {
var downloadURL = await FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
return Image.network(downloadURL);
}
您收到此错误是因为您从 _downloadURLExample 方法返回 Future<String>
,但 FutureBuilder
小部件的 future
属性 的类型为 Future<Widget>
因此你会收到类型不匹配错误。
使用此代码
FutureBuilder<String>(
future: downloadURLExample(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if(snapshot.hasData)
return Image.network(snapshot.data);
}
),
Future<String> downloadURLExample() {
var downloadURL = FirebaseStorage.instance.ref('defaultProfilePhoto').getDownloadURL();
return downloadURL;
}