- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用 Flutter 开发移动应用程序,我使用 swagger 生成一个包含所有 Web 服务的 Dart 文件代码生成器。我想从 Web 服务中获取所有用户的列表。在屏幕上,我想为每个用户显示:图像、名字、姓氏和电子邮件。我在 main.dart 中准备了如下 UI:
import 'package:flutter/material.dart';
import './utility.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(),
),
);
}
Widget _buildListUser() {
Utility test = new Utility();
print(test.getFirstNameUser());
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(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: const EdgeInsets.only(right: 15.0),
child: Image(
width: 65, image: AssetImage('assets/person.jpeg')), // Image of user
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'firstname & lastname', // first and last name of user
style: TextStyle(
fontSize: 22,
),
),
Container(
margin: const EdgeInsets.all(5.0),
child: Text('email'), // Email of user
),
],
),
],
),
),
),
);
});
}
}
并且,以下是 swagger 生成的用户模型:
part of swagger.api;
class UsersData {
String id = null;
String firstName = null;
String lastName = null;
String email = null;
String phone = null;
String image = null;
DateTime birthDay = null;
String fireBaseID = null;
String dealerID = null;
String type = null;
String provider = null;
DateTime registrationDate = null;
DateTime lastLogin = null;
bool allowComment = null;
bool isActive = null;
List<UserAddressData> addresses = [];
UsersData();
@override
String toString() {
return 'UsersData[id=$id, firstName=$firstName, lastName=$lastName, email=$email, phone=$phone, image=$image, birthDay=$birthDay, fireBaseID=$fireBaseID, dealerID=$dealerID, type=$type, provider=$provider, registrationDate=$registrationDate, lastLogin=$lastLogin, allowComment=$allowComment, isActive=$isActive, addresses=$addresses, ]';
}
UsersData.fromJson(Map<String, dynamic> json) {
if (json == null) return;
id = json['id'];
firstName = json['firstName'];
lastName = json['lastName'];
email = json['email'];
phone = json['phone'];
image = json['image'];
birthDay =
json['birthDay'] == null ? null : DateTime.parse(json['birthDay']);
fireBaseID = json['fireBaseID'];
dealerID = json['dealerID'];
type = json['type'];
provider = json['provider'];
registrationDate = json['registrationDate'] == null
? null
: DateTime.parse(json['registrationDate']);
lastLogin =
json['lastLogin'] == null ? null : DateTime.parse(json['lastLogin']);
allowComment = json['allowComment'];
isActive = json['isActive'];
addresses = UserAddressData.listFromJson(json['addresses']);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'firstName': firstName,
'lastName': lastName,
'email': email,
'phone': phone,
'image': image,
'birthDay': birthDay == null ? '' : birthDay.toUtc().toIso8601String(),
'fireBaseID': fireBaseID,
'dealerID': dealerID,
'type': type,
'provider': provider,
'registrationDate': registrationDate == null
? ''
: registrationDate.toUtc().toIso8601String(),
'lastLogin': lastLogin == null ? '' : lastLogin.toUtc().toIso8601String(),
'allowComment': allowComment,
'isActive': isActive,
'addresses': addresses
};
}
static List<UsersData> listFromJson(List<dynamic> json) {
return json == null
? new List<UsersData>()
: json.map((value) => new UsersData.fromJson(value)).toList();
}
static Map<String, UsersData> mapFromJson(
Map<String, Map<String, dynamic>> json) {
var map = new Map<String, UsersData>();
if (json != null && json.length > 0) {
json.forEach((String key, Map<String, dynamic> value) =>
map[key] = new UsersData.fromJson(value));
}
return map;
}
}
我创建了一个类“Utility.dart”,我在其中放置了一个方法来获取所有用户的名字列表,如下所示:
import 'package:flutter_app_ws/dart-client-generated/lib/api.dart';
class Utility {
UsersData user;
Utility();
List<String> getFirstNameUser() {
List<String> firstName = new List<String>();
firstName.add(user.firstName);
return firstName;
}
}
当我运行我的应用程序时,出现了很多错误,如下所示:
Compiler message: file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:6:8: Error: Not found: 'dart:html' import 'dart:html'; ^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:95:25: Error: Type 'HttpRequest' not found. void _openHttpRequest(HttpRequest request, String method, String url, ^^^^^^^^^^^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:30:25: Error: 'HttpRequest' isn't a type. final _xhrs = new Set(); ^^^^^^^^^^^ lib/main.dart:63:27: Error: Expected an identifier, but got ','. , // first and last name of user ^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:44:19: Error: Method not found: 'HttpRequest'. var xhr = new HttpRequest(); ^^^^^^^^^^^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:55:45: Error: Method not found: 'Blob'. var blob = xhr.response == null ? new Blob([]) : xhr.response; ^^^^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:56:24: Error: Method not found: 'FileReader'. var reader = new FileReader(); ^^^^^^^^^^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:55:49: Error: Too many positional arguments: 0 allowed, but 1 found. Try removing the extra positional arguments. var blob = xhr.response == null ? new Blob([]) : xhr.response; ^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:95:25: Error: 'HttpRequest' isn't a type. void _openHttpRequest(HttpRequest request, String method, String url, ^^^^^^^^^^^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:97:13: Error: The method 'open' isn't defined for the class 'invalid-type'. Try correcting the name to the name of an existing method, or defining a method named 'open'. request.open(method, url, async: asynch, user: user, password: password); ^^^^ file:///home/innovi/development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.0+1/lib/src/browser_client.dart:105:11: Error: The method 'abort' isn't defined for the class 'invalid-type'. Try correcting the name to the name of an existing method, or defining a method named 'abort'. xhr.abort();
我想知道问题出在哪里,以及如何使用我的网络服务来获取和显示:所有用户的图像、名字/姓氏和电子邮件。
最佳答案
我能够使用 swagger-codgen 的 2.4.2 版本为测试 flutter 项目生成 swagger 客户端,这应该已经解决了这个 issue .
java -jar swagger-codegen-cli-2.4.2.jar generate -l dart -i openapi.json -o swagger -DbrowserClient=false
重要标志:-DbrowserClient=false
然后按照 README.md
说明将生成的 swagger 库添加到我的测试 flutter 项目中:
Local
To use the package in your local drive, please include the following in >pubspec.yaml
dependencies:
swagger:
path: /path/to/swaggerTests
TODO
Getting Started
Please follow the installation procedure and then run the following:
import 'package:swagger/api.dart';
// TODO Configure API key authorization: api_key
//swagger.api.Configuration.apiKey{'key'} = 'YOUR_API_KEY';
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
//swagger.api.Configuration.apiKeyPrefix{'key'} = "Bearer";
var api_instance = new DefaultApi();
我只需要在 swagger 库的 pubspec.yaml
中明确指定环境。
name: swagger
version: 1.0.0
description: Swagger API client
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
http: '>=0.11.1 <0.12.0'
更新
java -jar openapi-generator-cli-3.3.4.jar generate -l dart -i openapi.json -o openapi -DbrowserClient=false
和 followwing README.md
就像你对 swagger 所做的一样。
我试过了,两种解决方案都有效。 Open API 似乎比 swagger 客户端更 flutter ready,因为我不需要在生成的 open api 库的 pubspec.yaml
中添加环境,但它是自动设置的。
关于android - 在我的 Flutter 应用程序中使用由 swagger 生成的 Dart codegn 提供的 WebServices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058938/
我正在尝试从flutter应用程序构建apk,但出现此错误: Note: /mnt/Software/Linux/Flutter/flutter/.pub-cache/hosted/pub.dartl
我有一个名为 X 的较大应用程序,还有另一个名为 Y 的较小应用程序。他们现在彼此分开,并且工作正常。我想将应用程序 Y 集成到 X 中。我想将 Y 的代码放入 X 项目中,但它们应该有不同的 Mai
在android Studio中选择Create New Flutter Project,出现如下4个选项。 Flutter 应用程序 Flutter 插件 Flutter 包 flutter 模块
我看到我的 flutter 项目生成了一个文件 ios/Flutter/Flutter.podspec ,这个文件有什么用? 如果它与生成的 Flutter.framework 有关? 我应该将它包含
我尝试过的 在包含flutter SDK的位置添加/编辑.bash_profile.rtf文件。 导出PATH = / Users / temur / Documents / Projects / F
Flutter 日志会打印数千个详细/垃圾邮件日志。 我正在尝试调试一个复杂的应用程序,但是打印太冗长了,以至于我很难找到我自己打印的东西。 有没有办法禁用详细? 就像是: Logger.level.
在flutter 1.22更新之后,我在Lineargradient colors属性中遇到错误,这给我一个错误,即未定义名称colors参数。.在Android中更新flutter和flutter插
在下面的代码 widget.hintText 中给出错误,我试图将日期选择器作为单独的组件,并在从其他文件调用它时动态传递提示文本值。 import 'package:date_field/date_
在下面的代码 widget.hintText 中给出错误,我试图将日期选择器作为单独的组件,并在从其他文件调用它时动态传递提示文本值。 import 'package:date_field/date_
Flutter 1.0 发布后,我正在按照步骤搭建 Flutter 开发环境。 在步骤中(如所附屏幕截图所示),它说要更新 $PATH 两次,一次使用 flutter 工具的路径 export PAT
我有一个用 flutter 编写的移动应用程序,我想将其转换为 flutter_web 应用程序(集成 flutter_web 尚不可用)。我目前遇到包裹问题。 我已按照本网站中列出的说明进行操作 h
如何向我的 Flutter 路由添加自定义转换?这是我目前的路线结构。 class MyApp extends StatelessWidget { // This widget is the
我正在尝试通过 URL 在 webview 中显示网页。我试过 flutter_webview_plugin 插件,但是当我在浏览器上运行项目时它不起作用。 在 flutter web applica
我正在使用 animatedContainer 在按下按钮时显示 listView.builder()。这是一个要显示的简单子(monad)列表,但问题是我不知道 ListView 构建器的高度会传递
我目前正在我的应用程序中制作渐变背景动画......我正在使用 lottie 动画的帮助下这样做!我试图将它封装在一个容器中并成功地做到了。但是有一个问题,尽管我将高度更改为大于 2000 的东西,但
美好的一天! 我无法弄清楚如何使用 google 标签管理器设置 flutter。我找到了 this package包括标签管理器 api。但是我不知道如何正确配置它。 (在网络上我只需要复制粘贴一个
我的购物车模型如下 class Cart { String description; double unitCost; double amount; int quantity; S
在 Flutter 应用程序中,我想为在线托管的资源(图像、视频等)实现缓存。 我希望它能在原生平台 (Android/iOS)(例如使用文件系统)和网络(例如使用 IndexedDB)上运行。 Fl
我写了一个页面,在顶部一切都很好,应该是这样。在底部我有一个事件的历史。我的容器的宽度是自动确定的(取决于屏幕的宽度),而高度 - 不,在不同的设备上有不同的高度(底部的缩进是不同的)。是否可以自动确
我正在处理一个页面,其中有一些字段,例如 textfield 和 slider。在页面的末尾必须有一个用于进行下一步的按钮,该按钮被包裹在 Align 中以在页面之间具有固定位置。 另一方面,resi
我是一名优秀的程序员,十分优秀!