Flutter POST&GET请求合并

时间:2020-08-03 13:07:18

标签: entity-framework flutter flutter-layout flutter-dependencies

我想创建一个用于下订单的应用程序。下订单时,我想在ListView中显示一张卡片。在后台,我有两个请求。第一个请求是POST请求,我在那里下了一辆出租车。第二个请求是GET请求,我要在其中检索有关订单的信息(剩余时间等)。

POST请求的响应如下:

{"status": "DONE", "response": {"message": "Your order saved.", "uuid": "fc1d6f52-9aef-11e3-84ae-0015af9e1aa1"}}

GET请求的响应如下:

{"status": "DONE", "response": {"status": 100, "message": "Заказ выполнен", "driver_id": "d1", "start_time": "2014-08-26 18:15:00", "remaining_time": "5", "amount": 150.00, "rate_id": 1}}

该过程应如下工作(这就是我的想法)。首先,通过POST请求,我下了一个订单,并得到了UUID作为响应。然后,我必须使用UUID(来自POST请求)并将其放在GET函数中,因此基于唯一的UUID,我可以获得订单信息。在下面我发布了我遇到的错误,但现在还是卡住了。任何帮助,将不胜感激。我是Flutter的新手,也许我错过了一些要点或概念。

import 'package:flutter/material.dart';
import 'package:xfit/model/orderTaxi_model.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:convert';

class DemoRequest extends StatefulWidget {
  @override
  _DemoRequestState createState() => _DemoRequestState();
}





class _DemoRequestState extends State<DemoRequest> {
  var _listSection = List<Widget>();
  OrderTaxi _futureOrder;
  String info;

  Future<OrderTaxi> _createOrder() async {
    final http.Response response = await http.post(
      'http://xxx.xxx/api/order',
      headers: <String, String>{
      },
      body: <String, String>{
        'api_key': 'XXXX-XXXX-XXXX-XXXX',
        'phone': '1111',
        'street': 'Testttt',
        'moderation_required': 'yes',
      },
    );
    if (response.statusCode == 200) {
      final Map responseString = jsonDecode(response.body);
      print(responseString);
      return OrderTaxi.fromJson(responseString);
    } else {
      throw Exception('Failed to create order');
    }
  }

  Future<String> getOrderInfo() async {
    var response = await http.get('http://xx.xxx/api/order/?api_key=XXXX-XXXX-XXXX-XXXX&uuid=${_futureOrder.uuid.toString()}');
    setState(() {
      var extractedInfo = json.decode(response.body);

      info = extractedInfo['response']['message'];
    });
    print(info);

  }

  @override
  void initState() {
    super.initState();
    _listSection.add(listSectionMethod('Title 1', 'Hello I am subtitle one', Icons.forward));
    _listSection.add(listSectionMethod('Title 2', 'Hello I am subtitle two', Icons.forward));

  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Trial #1'),
        centerTitle: true,
      ),
      body: listSection(),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          OrderTaxi response = await _createOrder();
          await getOrderInfo();
          setState(()  {
            // Here we add a new item to the list
            _futureOrder = response;
             _listSection.add(
             listSectionMethod('Order Status is: ', info, Icons.forward),
            );
          });
        },
        child: Icon(Icons.add),
        backgroundColor: Colors.blue,
      ),
    );
  }
  Card listSectionMethod(String title, String subtitle, IconData icon) {
    return new Card(
      child: ListTile(
        title: Text(
          title,
          style: TextStyle(fontWeight: FontWeight.bold),
        ),
        subtitle: Text(subtitle),
        trailing: Icon(
          icon,
          color: Colors.blue,
        ),
      ),
    );
  }
  Widget listSection() {
    return Container(
      margin: EdgeInsets.only(top: 20),
      child: ListView(
        children: [
          Column(
            children: this._listSection, // ----> Add this

          ),
        ],
      ),
    );
  }
}

这是我得到的错误:

E/flutter ( 4465): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
E/flutter ( 4465): Receiver: null
E/flutter ( 4465): Tried calling: []("message")
E/flutter ( 4465): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
E/flutter ( 4465): #1      _DemoRequestState.getOrderInfo.<anonymous closure> (package:xfit/getRequest_tutorial.dart:66:39)
E/flutter ( 4465): #2      State.setState (package:flutter/src/widgets/framework.dart:1233:30)
E/flutter ( 4465): #3      _DemoRequestState.getOrderInfo (package:xfit/getRequest_tutorial.dart:63:5)
E/flutter ( 4465): <asynchronous suspension>
E/flutter ( 4465): #4      _DemoRequestState.build.<anonymous closure> (package:xfit/getRequest_tutorial.dart:90:17)
E/flutter ( 4465): #5      _DemoRequestState.build.<anonymous closure> (package:xfit/getRequest_tutorial.dart:88:20)
E/flutter ( 4465): #6      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:779:19)
E/flutter ( 4465): #7      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:862:36)
E/flutter ( 4465): #8      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter ( 4465): #9      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:504:11)
E/flutter ( 4465): #10     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:282:5)
E/flutter ( 4465): #11     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:217:7)
E/flutter ( 4465): #12     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:475:9)
E/flutter ( 4465): #13     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter ( 4465): #14     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:122:9)
E/flutter ( 4465): #15     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter ( 4465): #16     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18)
E/flutter ( 4465): #17     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106:7)
E/flutter ( 4465): #18     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter ( 4465): #19     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter ( 4465): #20     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter ( 4465): #21     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter ( 4465): #22     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter ( 4465): #23     _rootRunUnary (dart:async/zone.dart:1196:13)
E/flutter ( 4465): #24     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 4465): #25     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter ( 4465): #26     _invoke1 (dart:ui/hooks.dart:275:10)
E/flutter ( 4465): #27     _dispatchPointerDataPacket (dart:ui/hooks.dart:184:5)
E/flutter ( 4465): 
I/flutter ( 4465): 0b6eb2b2-2edd-4b28-9fdd-fec2e28530b0

1 个答案:

答案 0 :(得分:-1)

这可能是答案:stackoverflow.com/a/51473337/6942599问题是模拟器。