Flutter “颤振返回”;小部件;从「;未来<;Widget>&引用;
问题 我有一个函数“stackOverflow”,如下所示。我希望该函数返回widget“Icon”,但我得到了错误代码:参数类型Flutter “颤振返回”;小部件;从「;未来<;Widget>&引用;,flutter,Flutter,问题 我有一个函数“stackOverflow”,如下所示。我希望该函数返回widget“Icon”,但我得到了错误代码:参数类型Future无法分配给参数类型“widget” `Future<Widget> stackOverflow () async{ var value1 = 0; var value2 = 7; var value3 = 20; if (value1 >= 1 && value1 <= 5){
Future
无法分配给参数类型“widget”
`Future<Widget> stackOverflow () async{
var value1 = 0;
var value2 = 7;
var value3 = 20;
if (value1 >= 1 && value1 <= 5){
return Icon(
Icons.check_circle
);}
else if (value2 >= 6 ||value2 <= 8){
return Icon(
Icons.ac_unit
);
}
}`
`Future stackOverflow()异步{
var值1=0;
var值2=7;
var值3=20;
如果(value1>=1&&value1=6 | | value2看起来您已经正确理解了这个问题。您尝试使用FutureBuilder
是正确的
第一行:
儿童:[
文本(“介于1和5之间”),
未来建设者(
future:stackOverflow(),
initialData:const SizedBox.shrink(),
生成器:(上下文,快照){
返回快照数据;
},
),
],
第二行:
return stackOverflow();//snapshot.data;
一定是
返回snapshot.data;
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Future<Widget> stackOverflow () async{
var value1 = 0;
var value2 = 7;
var value3 = 20;
if (value1 >= 1 && value1 <= 5){
return Icon(
Icons.check_circle
);}
else if (value2 >= 6 ||value2 <= 8){
return Icon(
Icons.ac_unit
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
children: <Widget>[
Text('Is between 1 & 5'),
stackOverflow()
],
),
Row(
children: <Widget>[
Text('Is between 6 & 8'),
FutureBuilder(
future:
stackOverflow(),
builder: (BuildContext context,
AsyncSnapshot<Widget> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('none');
case ConnectionState.active:
case ConnectionState.waiting:
return Text('waiting');
case ConnectionState.done:
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
return stackOverflow();//snapshot.data;
// You can reach your snapshot.data['url'] in here
}
return null; // unreachable
}
),
],
),
Row(
children: <Widget>[
Text('Is 20'),
],
),
],
)
);
}
}