繁体   English   中英

我收到 flutter 类型错误“响应”不是“FutureOr”的子类型<string> '</string>

[英]I am getting a flutter type error 'Response' is not a subtype of 'FutureOr<String>'

我想在 flutter 中解析 json object 但我无法让它显示在屏幕上。 我收到一条错误消息,提示“响应”类型不是“FutureOr”的子类型。 这是源代码


    Future<String> loadList() async {
      return await Network().getData('data');
    }
    
    class _IndexState extends State<Index> {
      bool _loading = true;
    
      Future loadList() async {
        String jsonString = await loadList();
        final response = json.decode(jsonString);
        Prospects prospects = new Prospects.fromJson(response);
        print(
            '${prospects.success} - ${prospects.data[0].id} - ${prospects.data[0].firstname} - ${prospects.data[0].lastname} - ${prospects.data[0].amountSpeculated}');
        return prospects;
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
              title: Text(_loading ? 'Loading ' : 'JSON ListView in Flutter'),
            ),
            body: Center(
              child: FutureBuilder<String>(
                future: loadList(),
                builder: (context, snapshot) {
                  if (snapshot.hasData) {
                    return Text(snapshot.data);
                  } else if (snapshot.hasError) {
                    return Text("${snapshot.error}");
                  }
                  return CircularProgressIndicator();
                },
              ),
            ));
      }
    }

  1. 你的未来是loadList()而不是_loadList()
body: Center(
  child: FutureBuilder<String>(
    future: loadList(),
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        return Text(snapshot.data);
      } else if (snapshot.hasError) {
        return Text("${snapshot.error}");
      }
      return CircularProgressIndicator();
    },
  ),
)
  1. 您的 Future 被定义为Future ( Future<dynamic> ) 而不是Future<String>
Future<String> loadList() async {
  String jsonString = await _loadList();
  final response = json.decode(jsonString);
  Prospects prospects = new Prospects.fromJson(response);
  return '${prospects.success} - ${prospects.data[0].id} - ${prospects.data[0].firstname} - ${prospects.data[0].lastname} - ${prospects.data[0].amountSpeculated}';
}

完整的源代码

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';

void main() {
  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      home: HomePage(),
    ),
  );
}

class HomePage extends HookWidget {
  Future<String> loadList() async {
    await Future.delayed(Duration(seconds: 2));
    return ('My String');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: FutureBuilder<String>(
          future: loadList(),
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return Text(snapshot.data);
            } else if (snapshot.hasError) {
              return Text("${snapshot.error}");
            }

            // By default, show a loading spinner.
            return CircularProgressIndicator();
          },
        ),
      ),
    );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM