Я пытаюсь разработать мобильное приложение с Flutter, используя IDE android studio, я использую swagger для генерации кода Dart-файлов, который содержит все веб-сервисы, как показано ниже: я перехожу к «swagger.io», затем явойдите в свою учетную запись в Swagger Hub, затем выберите «импортировать Api» и поместите URL-адрес моего веб-сервиса в поле «URL или путь».После этого я экспортирую этот файл как файл dart с именем «dart-client-Generated».Наконец, я импортирую этот файл в свой проект флаттера и добавил недостающие зависимости в pubspec.yaml.Я хочу использовать один из моих веб-сервисов, которые получают всю категорию и отображают ее в ListView на экране.Я подготовил пользовательский интерфейс в main.dart следующим образом:
import 'package:flutter/material.dart';
void main() => runApp(ListUserApp());
class ListUserApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'User List 4Motors',
home: ListUserScreen(),
);
}
}
class ListUserScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return ListUserScreenState();
}
}
class ListUserScreenState extends State<ListUserScreen> {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.indigo,
),
home: Scaffold(
appBar: AppBar(
title: Text('User List 4Motors'),
),
body: _buildListUser(),
),
);
}
@override
void initState() {
super.initState();
_getAllCategories();
}
void _getAllCategories() {
print('Begin');
try {
new FrontEndServicesApi()
.apiFrontEndServicesGetAllCategoriesProductGet()
.then((categories) {
print('Category: ');
print(categories);
});
} catch (e) {
print(e.toString());
}
}
Widget _buildListUser() {
return ListView.builder(itemBuilder: (context, position) {
return Card(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Container(
margin: const EdgeInsets.all(10.0),
child: Row(
children: <Widget>[
Text(
'catagory',
//categories[position].toString(), // Category name
style: TextStyle(
fontSize: 22,
),
),
],
),
),
),
);
});
}
}
Следуя модели категории, сгенерированной swagger:
part of swagger.api;
class CustomCategoryData {
String id = null;
Map<String, String> name = {};
Map<String, String> description = {};
String icon = null;
String image = null;
int order = null;
String color = null;
List<CustomSubCategory> subCategories = [];
CustomCategoryData();
@override
String toString() {
return 'CustomCategoryData[id=$id, name=$name, description=$description, icon=$icon, image=$image, order=$order, color=$color, subCategories=$subCategories, ]';
}
CustomCategoryData.fromJson(Map<String, dynamic> json) {
if (json == null) return;
id =
json['id']
;
name =
json['name']
;
description =
json['description']
;
icon =
json['icon']
;
image =
json['image']
;
order =
json['order']
;
color =
json['color']
;
subCategories =
CustomSubCategory.listFromJson(json['subCategories'])
;
}
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
'description': description,
'icon': icon,
'image': image,
'order': order,
'color': color,
'subCategories': subCategories
};
}
static List<CustomCategoryData> listFromJson(List<dynamic> json) {
return json == null ? new List<CustomCategoryData>() : json.map((value) => new CustomCategoryData.fromJson(value)).toList();
}
static Map<String, CustomCategoryData> mapFromJson(Map<String, Map<String, dynamic>> json) {
var map = new Map<String, CustomCategoryData>();
if (json != null && json.length > 0) {
json.forEach((String key, Map<String, dynamic> value) => map[key] = new CustomCategoryData.fromJson(value));
}
return map;
}
}
И следующий код является классом FrontEndServicesApiсгенерировано swagger:
part of swagger.api;
class FrontEndServicesApi {
final ApiClient apiClient;
FrontEndServicesApi([ApiClient apiClient]) : apiClient = apiClient ?? defaultApiClient;
Future<List<CustomCategoryData>> apiFrontEndServicesGetAllCategoriesProductGet() async {
Object postBody = null;
// verify required params are set
// create path and map variables
String path = "/api/FrontEndServices/GetAllCategoriesProduct".replaceAll("{format}","json");
// query params
List<QueryParam> queryParams = [];
Map<String, String> headerParams = {};
Map<String, String> formParams = {};
List<String> contentTypes = [];
String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json";
List<String> authNames = ["Bearer"];
if(contentType.startsWith("multipart/form-data")) {
bool hasFields = false;
MultipartRequest mp = new MultipartRequest(null, null);
if(hasFields)
postBody = mp;
}
else {
}
var response = await apiClient.invokeAPI(path,
'GET',
queryParams,
postBody,
headerParams,
formParams,
contentType,
authNames);
if(response.statusCode >= 400) {
throw new ApiException(response.statusCode, response.body);
} else if(response.body != null) {
return
(apiClient.deserialize(response.body, 'List<CustomCategoryData>') as List).map((item) => item as CustomCategoryData).toList();
} else {
return null;
}
}
Итак, когда я запускаю мое приложение для флаттера, появляется много ошибок:
Выполнение горячего перезапуска ... Синхронизация файлов на устройстве Android SDKпостроено для x86 ...
Сообщение компилятора: file: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart: 6: 8: ошибка: не найдена: 'dart: html' import 'dart: html';^ file: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart: 95: 25: Ошибка: введите HttpRequest ненайденный.void _openHttpRequest (запрос HttpRequest, метод String, URL-адрес строки, ^^^^^^^^^^^ file: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+ 1 / lib / src / browser_client.dart: 30: 25: Ошибка: «HttpRequest» не является типом. Final _xhrs = new Set (); ^^^^^^^^^^^ file: ///home / innovi / .pub-cache / hosted / pub.dartlang.org / http-0.12.0 + 1 / lib / src / browser_client.dart: 44: 19: ошибка: метод не найден: 'HttpRequest'. var xhr =новый файл HttpRequest (); ^^^^^^^^^^^ file: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart: 55: 45: Ошибка: метод не найден: «Blob». var blob = xhr.response == null? new Blob ([]): xhr.response; ^^^^ file: /// home /innovi / .pub-cache / hosted / pub.dartlang.org / http-0.12.0 + 1 / lib / src / browser_client.dart: 56: 24: ошибка: метод не найден: «FileReader». var reader = new FileReader(); ^^^^^^^^^^ file: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart: 55: 49: Ошибка: слишком много позиционных аргументов: 0 разрешено, но найдено 1. Tудалите лишние позиционные аргументы.var blob = xhr.response == ноль?новый BLOB-объект ([]): xhr.response;^ file: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart: 95: 25: ошибка: 'HttpRequest' isn 'т тип.void _openHttpRequest (запрос HttpRequest, метод String, URL-адрес строки, ^^^^^^^^^^^ file: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+ 1 / lib / src / browser_client.dart: 97: 13: Ошибка: метод 'open' не определен для класса 'invalid-type'. Попробуйте исправить имя с именем существующего метода или определитьметод с именем «open». request.open (метод, url, async: asynch, пользователь: пользователь, пароль: пароль); ^^^^ файл: ///home/innovi/.pub-cache/hosted/pub.dartlang.org / http-0.12.0 + 1 / lib / src / browser_client.dart: 105: 11: Ошибка: метод «abort» не определен для класса «invalid-type». Попробуйте исправить имя в соответствии с именемсуществующего метода или определение метода с именем 'abort'. xhr.abort (); ^^^^^ Перезапущенное приложение через 1 331 мс. I / flutter (10372): Начать E / flutter (10372): [ОШИБКА: flutter/lib/ui/ui_dart_state.cc(148)] Необработанное исключение: 'пакет: http / src / browser_client.dart': ошибка:Файл: ///home/innovi/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart: 44: 19:
Ошибка: метод не найден: 'HttpRequest'. E / флаттер (10372): var xhr
= новый HttpRequest (); E / flutter (10372): ^^^^^^^^^^^ E / flutter (10372): # 0 _AsyncAwaitCompleter.start
(dart: async / runtime / libasync_patch.dart: 49: 6) E / flutter (10372): # 1
BrowserClient.send (пакет: http / src / browser_client.dart: 42: 32)
E / flutter (10372): # 2 BaseClient._sendUnstreamed
(пакет: http / src / base_client.dart: 169: 38) E / flutter (10372):
E / flutter (10372): # 3 BaseClient.get
(пакет: http / src / base_client.dart: 32: 7) E / flutter (10372): # 4
ApiClient.invokeAPI
(Файл: ///home/innovi/development/FlutterProject/flutter_app_ws/lib/dart-client-generated/lib/api_client.dart: 193: 25)
E / флаттер (10372): E / флаттер (10372): # 5
FrontEndServicesApi.apiFrontEndServicesGetAllCategoriesProductGet
(Файл: ///home/innovi/development/FlutterProject/flutter_app_ws/lib/dart-client-generated/lib/api/front_end_services_api.dart: 886: 36)
E / флаттер (10372): E / флаттер (10372): # 6
ListUserScreenState._getAllCategories
(пакет: flutter_app_ws / main.dart: 51: 12) E / flutter (10372): # 7
ListUserScreenState.initState (пакет: flutter_app_ws / main.dart: 44: 5)
E / flutter (10372): # 8 StatefulElement._firstBuild
(пакет: flutter / src / widgets / framework.dart: 3846: 58) E / flutter
(10372): # 9 ComponentElement.mount
(пакет: flutter / src / widgets / framework.dart: 3711: 5) E / flutter (10372):
10 Element.inflateWidget (пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 11 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 12 SingleChildRenderObjectElement.mount
(пакет: flutter / src / widgets / framework.dart: 4876: 14) E / flutter
(10372): # 13 Element.inflateWidget
(пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 14 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 15 ComponentElement.performRebuild
(пакет: flutter / src / widgets / framework.dart: 3747: 16) E / flutter
(10372): # 16 Element.rebuild
(пакет: flutter / src / widgets / framework.dart: 3559: 5) E / flutter (10372):
17 ComponentElement._firstBuild (пакет: flutter / src / widgets / framework.dart: 3716: 5) E / flutter (10372):
18 ComponentElement.mount (пакет: флаттер / src / widgets / framework.dart: 3711: 5) E / флаттер (10372):
19 Element.inflateWidget (пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 20 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 21 SingleChildRenderObjectElement.mount
(пакет: flutter / src / widgets / framework.dart: 4876: 14) E / flutter
(10372): # 22 Element.inflateWidget
(пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 23 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 24 SingleChildRenderObjectElement.mount
(пакет: flutter / src / widgets / framework.dart: 4876: 14) E / flutter
(10372): # 25 Element.inflateWidget
(пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 26 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 27 SingleChildRenderObjectElement.mount
(пакет: flutter / src / widgets / framework.dart: 4876: 14) E / flutter
(10372): # 28 Element.inflateWidget
(пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 29 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 30 SingleChildRenderObjectElement.mount
(пакет: flutter / src / widgets / framework.dart: 4876: 14) E / flutter
(10372): # 31 Element.inflateWidget(пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 32 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 33 ComponentElement.performRebuild
(пакет: flutter / src / widgets / framework.dart: 3747: 16) E / flutter
(10372): # 34 Element.rebuild
(пакет: flutter / src / widgets / framework.dart: 3559: 5) E / flutter (10372):
35 ComponentElement._firstBuild (пакет: flutter / src / widgets / framework.dart: 3716: 5) E / flutter (10372):
36 StatefulElement._firstBuild (пакет: flutter / src / widgets / framework.dart: 3864: 11) E / flutter
(10372): # 37 ComponentElement.mount
(пакет: flutter / src / widgets / framework.dart: 3711: 5) E / flutter (10372):
38 Element.inflateWidget (пакет: flutter / src / widgets / framework.dart: 2956: 14) E / flutter
(10372): # 39 Element.updateChild
(пакет: flutter / src / widgets / framework.dart: 2759: 12) E / flutter
(10372): # 40 ComponentElement.performRebuild
(пакет: flutter / src / widgets / framework.dart: 3747: 16) E / flutter
(10372): # 41 El
Итак, как я могу исправить эти ошибки, я застрял, может кто-нибудь мне помочь.