添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
// 创建一个 AsciiCodec 对象 
AsciiCodec ac=new AsciiCodec();
// 编码 将ascii字符串转换成UintList类型 无法编码中文 会报错
Uint8List list=ac.encode("Hello Dart");
// 等价于
// Uint8List list=AsciiEncoder().convert("Hello Dart");
print(list);  // [72, 101, 108, 108, 111, 32, 68, 97, 114, 116]
// 解码 将UintList转换成ascii字符串
String str=ac.decode(list);
// 等价于
// String str=AsciiDecoder().convert(list);
print(str);    // Hello Dart
// 解码流 即将Stram<List<int>>类型转换成ascii字符串 
ac.decodeStream(Stream.value(list)).then((value)=>print(value)); // Hello Dart
// 编解码器的名称
print(ac.name);  // us-ascii

3. Base64

AsciiCodec ac=new AsciiCodec();
Uint8List list=await ac.encode("Hello Dart");
print(list);  //  [72, 101, 108, 108, 111, 32, 68, 97, 114, 116]
// Base64Codec允许base64将字节编码为ASCII字符串,并将有效编码解码回字节,始终是4的倍数。
Base64Codec bc=new Base64Codec();
// 编码
String str=bc.encode(list);
// 等价于
// String str=new Base64Encoder().convert(list);
print(str);  //   SGVsbG8gRGFydA==
// 解码
Uint8List list2=bc.decode(str);
// 等价于
// Uint8List list2=new Base64Decoder().convert(str);
print(list2); //  [72, 101, 108, 108, 111, 32, 68, 97, 114, 116]
// 验证并标准化source的base64编码数据 是base64则照常输出 不是则进行填充或报错
// 看是否是4的倍数 如果多一个字符 则报错 多两个及以上 则填充
print(bc.normalize(str));

4. JSON

JsonCodec jc=new JsonCodec();
// JS中的对象就是这里的Map
print({}.runtimeType);
// 将Map转换成JSON
Object person=jc.encode({'name':"zs"});
// 等价于
// Object person=new JsonEncoder().convert({'name':"zs"});
print(person);
// 将JSON转换成Map
Map<String,dynamic> str=jc.decode(person);
// 等价于
// Map<String,dynamic> str=new JsonDecoder().convert(person);
print(str);
// 将对象或JSON字符串 转换成一个UTF-8数组(Uint8List)
Uint8List person2=new JsonUtf8Encoder().convert({'name':'zs'});
print(person2);

5. UTF8

Utf8Codec utf=new Utf8Codec();
// 将字符串编码为Uint8List
Uint8List list=utf.encode("Hello Dart");
// 等价于
// Uint8List list=new Utf8Encoder().convert("Hello Dart");
print(list);
// 将Uint8List解码为字符串
String str=utf.decode(list);
// 等价于
// String str=new Utf8Decoder().convert(list);
print(str);
// 将流解码
utf.decodeStream(Stream.value(list)).then((value) => print(value));
print(utf.name);

6. Latin1

// Latin1编码是单字节编码(无法编码中文),向下兼容ASCII
Latin1Codec lc=new Latin1Codec();
Uint8List list=lc.encode("Hello Dart");
// Uint8List list2=lc.encode("你好 Dart"); //报错
print(list);
String str=lc.decode(list);
print(str);
                    1. 导入import 'dart:convert';     import 'dart:typed_data';  // Uint8List需要导入这个2. Ascii// 创建一个 AsciiCodec 对象 AsciiCodec ac=new AsciiCodec();// 编码 将ascii字符串转换成UintList类型 无法编码中文 会报错Uint8List list=ac.encode("Hello Dart");// 等价于// Uint8List list=AsciiE
将Json数据转成实体类可以方便我们开发的时候使用数据,手动输入字段名称的话很容易出错,并且接口多的话很不好维护。
Flutter是否有Gson、FastJson这样的库
在Android原生开发,我们有很好用的Gson、FastJson等第三方库来帮助我们将json转成实体类。但是,在Flutter可能不会有这样的第三方库供我们使用了,详细原因请看JSON and serialization
Flutter 如何处理Json
Flutter给我们提供了d..
// NOTE: Be sure to use double quotes ("),
// not single quotes ('), inside the JSON string.
// This string is JSON, not Dart.
var...
import 'package:dio/dio.dart' 调用数据
import 'dart:convert'; json串解析
创建一个函数, 函数要用异步(async)方式
放入之后创建response类型变量用来接收数据
与创建dio对象,用来调用接口数据
dio数据时await必须要使用同步awiait, 否则会报错,
返回的statusCode码 200 即为成功,否则即为失败
json.decode()解析数
				
在客户端开发的过程,JSON的序列化与反序列化是一个常见的操作,有非常好用的gson,fastjson。由于Flutter是禁止使用反射的,所以在flutter并没有这样的库,所以在flutter使用json的解析还是比较繁琐的,不像java那么简单。下面总结常用的json解析: 一、使用dart:convert内置库解析 1、示例一 (1)json结构 "callback":"success", "data":"张三" (2)将json转为Map cons...
Uint8List base64deBody = base64Decode(base64enBody); String result = String.fromCharCodes(base64deBody) 出现乱码的原因是在使用String.fromCharCodes()时,并不能指定编码格式,造成在编码文出现乱码 修复:使用utf8编码 Uint8List base64deBody = base64Decode(base64enBody);
Flutter,Checkbox是一个非常常用的组件,用于表示一个复选框。Checkbox需要两个状态,选和未选状态,当用户点击复选框时,它的状态会发生变化。 以下是使用Checkbox的示例代码: ```dart bool _isChecked = false; Checkbox( value: _isChecked, onChanged: (bool value) { setState(() { _isChecked = value; 在上面的代码,我们首先定义一个布尔型变量 `_isChecked`,表示复选框的状态。然后创建了一个 `Checkbox` 组件,并传入两个必要的参数: - `value` 表示复选框的当前状态,它必须是一个布尔值。 - `onChanged` 是一个回调函数,当用户点击复选框时,该函数会被调用,我们需要在该函数改变 `_isChecked` 的值。 最后,我们将 `Checkbox` 组件包含在需要的 Widget 即可。 需要注意的是,在使用 `Checkbox` 组件时,通常需要将其包裹在 `StatefulWidget` ,并在 `onChanged` 回调函数调用 `setState` 方法来更新组件的状态。