Ya, 我是鱼板伯爵 http 套件可以让你串接API,你可以利用他来做HTTP请求,是一个很ㄅㄧㄤˋ的工具喔。
dependencies:
flutter:
sdk: flutter
http: ^0.13.3
你需要打开IOS和Android的设定档来开启一些限制。
路径/ios/Runner/Info.plist
。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
路径/android/app/src/main/AndroidManifest.xml
。
android:usesCleartextTraffic="true"
在这里我使用JSON Server来当做测试的API,安装完json-server後你可以修改db.json
来编辑你的API格式。
$ json-server --watch db.json
{
"auth": [
{
"id": 1,
"username": "json-server",
"password": "asdasdlmasdmlasklmklmsad"
}
]
}
不管是传送还是接收都希望资料的格式是固定的,若为不固定的资料格式可能会导致APP有错误。可以利用Quicktype来生成我们的API模型(推荐新手),又或者自己新增一个Class再用快捷键(mac: command
+.
|win: control
+.
)来生成,不过这个需要自己先定义好。
第一步我们一样先创建一个API结构,要注意的是Android的模拟器接口是http://10.0.2.2:3000
,IOS的接口是localhost:3000
,而後面的port可以以自行修改(如果你的Local API Port是500就改500)。
/// Android calls the http://10.0.2.2:3000/auth endpoint.
///
/// IOS calls the http://localhost:3000/auth endpoint.
abstract class ApiDataSource {
/// Create new user.
Future<String> createUser(User body);
/// Get user info id, username, passowrd
Future<String> getUser(int id);
/// Update user data
Future<String> updateUser(int id, User body);
}
先创建一个domain(使用的API)和client(http请求),然後再对class名称点击快捷键,生成API框架。
class UserRepository implements ApiDataSource {
final client = http.Client();
final String domain = "http://localhost:3000";
}
用这三个请求来实作创建使用者、取得使用者资料和更新使用者资料。
我就以POST来做范例,首先使用client.post
做POST请求,接着把使用者的资料模型转成json的格式送出,请求成功後就可以得到response,你可以得到回应的资讯,完成後就可以用按钮触发了。
@override
Future<String> createUser(User body) {
return _createUser(
Uri.parse('$domain/auth'),
body,
);
}
Future<String> _createUser(
Uri url,
User body,
) async {
try {
final response = await client.post(
url,
headers: {
'Content-Type': 'application/json',
},
body: body.toJson(),
);
if (response.statusCode == 200) {
return response.body;
} else {
return response.body;
}
} catch (e) {
return e.toString();
}
}
TextButton(
child: Text(
"POST",
style: TextStyle(fontSize: 30),
),
onPressed: () {
userRepository.createUser(
User(
username: "username",
password: "password",
),
);
},
),
小游戏,威利在哪里? (威利穿着红白条纹的衬衫并戴着一个绒球帽,手上拿着木制的手杖,还戴着一副眼镜...
今天我们来尝试看看部署一个 Dapp。要进入之前请先确保,有照着前两天介绍的 metamask &a...
Youtube连结:https://bit.ly/33cfaZS 红黑树有着自我平衡的特性,透过「...
感想 第三十天,来点结语好了,非常感谢 IT 邦帮忙这举办的铁人活动,尤其是平常上班,没有特别的动力...
前言 今天要聊到的是 Task 把超过自己承载能力的任务放入 TP 交给别条 thread 执行的过...