session
Network request result
json to dart https://javiercbk.github.io/json_to_dart/
Getting Started
Add dependency
dependencies: session: ^1.0.3+2 #latest version
Example
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:session/session.dart';
export 'package:session/session.dart' show Result;
Config configAPI(String baseURL) {
return Config(
baseUrl: baseURL ?? "https://www.httpbin.org/",
// proxy: 'PROXY localhost:8888',
connectTimeout: 10,
receiveTimeout: 10,
);
}
SessionInterceptorSendHandler _onRequest = (options) async {
var headers = {
'os': Platform.isIOS ? 'ios' : 'android',
};
options.headers.addAll(headers);
// if (UserStore.store.getState().isLogin) {
// options.headers['id'] = UserStore.store.getState().user.userId;
// }
// options.contentType = Headers.formUrlEncodedContentType;
// options.responseType = ResponseType.plain;
return options;
};
/// Response result interception processing
Result _onValidResult(Result result, bool validResult, BuildContext context) {
// 拦截处理一些错误
if (validResult) {
switch (result.code) {
case "${-3}":
// do something...
break;
case "${-2}":
// do something...
break;
}
}
return result;
}
///
/// Send the request and parse the entity type corresponding to the result returned by the remote server
///
/// baseUrl: host address
/// path: request path
/// queryParameters: URL carries request parameters
/// connectTimeout: Timeout
// validResult: Whether to verify the return result
/// context: context
///
Future<Result> getAPI(
{String baseUrl,
String path = '',
Map<String, dynamic> queryParameters,
int connectTimeout,
bool validResult = true,
BuildContext context}) async {
return requestAPI(
baseUrl : baseUrl,
path: path,
queryParameters: queryParameters,
options: Options(method: 'get'),
connectTimeout: connectTimeout,
validResult : validResult,
context: context);
}
///
/// Send a request and parse the entity type corresponding to the result returned by the remote server
///
/// baseUrl: host address
/// path: request path
/// data: request parameters
// connectTimeout: timeout
/// validResult: whether to verify the return result
/// context: context
///
Future<Result> postAPI(
{ String baseUrl,
String path = '' ,
data,
int connectTimeout,
bool validResult = true,
BuildContext context}) async {
return requestAPI(
baseUrl : baseUrl,
path: path,
date : date,
options: Options(method: 'post'),
connectTimeout: connectTimeout,
validResult : validResult,
context: context);
}
///
/// Send the request and parse the entity type corresponding to the result returned by the remote server
///
/// baseUrl: host address
/// path: request path
/// data: request parameters
/// validResult: whether to verify Return result
/// context: context
///
Future<Result> requestAPI(
{ String baseUrl,
String path = '' ,
data,
Map<String, dynamic> queryParameters,
Options options,
int connectTimeout,
bool validResult = true,
BuildContext context}) async {
Session session = Session(
config : configAPI (baseUrl),
onRequest: _onRequest,
);
Result result = await session.request(
path,
date : date,
queryParameters: queryParameters,
options: options,
connectTimeout: connectTimeout,
);
return _onValidResult(result, validResult, context);
}
void example() async {
getAPI(path: "ip").then((result) {
print("======");
print(result.code);
print(result.message);
print(result.body);
print("======");
});
}
Contribute on GitHub
https://github.com/OctMon/session
Provides the list of the opensource Flutter apps collection with GitHub repository.