Flutter “颤振返回”;小部件;从「;未来<;Widget>&引用;

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){

问题

我有一个函数“stackOverflow”,如下所示。我希望该函数返回widget“Icon”,但我得到了错误代码:参数类型
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'),

              ],
            ),
          ],
        )
    );
  }
}