Невозможно получить данные из Prestashop API и отобразить на флаттере - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь получить данные из Prestashop и получить их на виджете flutter. это код: но я получил ошибку, как и ниже.

Что мне нужно знать, так это начать получать данные prestashop и отображать их в моем приложении flutter, например, Продукты - Заказы - клиенты, которые я создал Класс, где получить Будущие данные из prestashop и действия будут выдаваться плоской кнопкой, которая должна возвращать json. Ссылка верна, а также ключ веб-службы в prestashop

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(HomePage());
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  Future getData() async {
    http.Response response = await http
        .get('https://uibox.store/api/products/1?output_format=JSON', headers: {
      "Autorization": ('74R9CQC6SX6Y2P369DLZ73VFB9AB5LV1'),
      "Accept": "application/json",
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.blue,
        appBar: AppBar(
          centerTitle: true,
          backgroundColor: Colors.black,
          title: Text('TestAPI'),
        ),
        body: Container(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Center(
                child: FlatButton(
                    color: Colors.white,
                    onPressed: () {
                      getData();
                    },
                    child: Text('Click here to get data')),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Это ошибка, которую я получаю

Error: XMLHttpRequest error.
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:20      get current
packages/http/src/browser_client.dart 84:22                                       <fn>
dart-sdk/lib/async/zone.dart 1450:54                                              runUnary
dart-sdk/lib/async/future_impl.dart 143:18                                        handleValue
dart-sdk/lib/async/future_impl.dart 696:44                                        handleValueCallback
dart-sdk/lib/async/future_impl.dart 725:32                                        _propagateToListeners
dart-sdk/lib/async/future_impl.dart 519:7                                         [_complete]
dart-sdk/lib/async/stream_pipe.dart 61:11                                         _cancelAndValue
dart-sdk/lib/async/stream.dart 1229:7                                             <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 324:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 329:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37204:58                              <fn>


    at Object.createErrorWithStack (http://localhost:34359/dart_sdk.js:4477:12)
    at Object._rethrow (http://localhost:34359/dart_sdk.js:37464:16)
    at async._AsyncCallbackEntry.new.callback (http://localhost:34359/dart_sdk.js:37458:13)
    at Object._microtaskLoop (http://localhost:34359/dart_sdk.js:37290:13)
    at _startMicrotaskLoop (http://localhost:34359/dart_sdk.js:37296:13)
    at http://localhost:34359/dart_sdk.js:32918:9

1 Ответ

0 голосов
/ 29 июня 2020

Вам необходимо кодировать ключ авторизации в base64.

Попробуйте это: (я не программист флаттера)

import 'dart:convert';
Codec<String, String> stringToBase64 = utf8.fuse(base64);
String encoded = stringToBase64.encode(credentials);

Подробнее.

...