整理
This commit is contained in:
parent
ceb2752f2e
commit
d15a204c62
@ -6,6 +6,8 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
||||||
import 'package:image/image.dart' as image;
|
import 'package:image/image.dart' as image;
|
||||||
import 'package:weibo_kit/weibo_kit.dart';
|
import 'package:weibo_kit/weibo_kit.dart';
|
||||||
|
import 'package:weibo_kit_example/model/weibo_api_resp.dart';
|
||||||
|
import 'package:weibo_kit_example/weibo.dart';
|
||||||
|
|
||||||
const String _WEIBO_APP_KEY = 'your weibo app key';
|
const String _WEIBO_APP_KEY = 'your weibo app key';
|
||||||
const String _WEIBO_UNIVERSAL_LINK = 'your weibo universal link';
|
const String _WEIBO_UNIVERSAL_LINK = 'your weibo universal link';
|
||||||
|
@ -1,7 +1,26 @@
|
|||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
import 'package:weibo_kit/src/model/api/weibo_api_resp.dart';
|
|
||||||
|
|
||||||
part 'weibo_user_info_resp.g.dart';
|
part 'weibo_api_resp.g.dart';
|
||||||
|
|
||||||
|
abstract class WeiboApiResp {
|
||||||
|
const WeiboApiResp({
|
||||||
|
required this.errorCode,
|
||||||
|
this.error,
|
||||||
|
this.request,
|
||||||
|
});
|
||||||
|
|
||||||
|
static const int ERROR_CODE_SUCCESS = 0;
|
||||||
|
|
||||||
|
/// https://open.weibo.com/wiki/Help/error
|
||||||
|
@JsonKey(
|
||||||
|
defaultValue: ERROR_CODE_SUCCESS,
|
||||||
|
)
|
||||||
|
final int errorCode;
|
||||||
|
final String? error;
|
||||||
|
final String? request;
|
||||||
|
|
||||||
|
bool get isSuccessful => errorCode == ERROR_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
@JsonSerializable(
|
@JsonSerializable(
|
||||||
explicitToJson: true,
|
explicitToJson: true,
|
||||||
@ -63,3 +82,4 @@ class WeiboUserInfoResp extends WeiboApiResp {
|
|||||||
|
|
||||||
Map<String, dynamic> toJson() => _$WeiboUserInfoRespToJson(this);
|
Map<String, dynamic> toJson() => _$WeiboUserInfoRespToJson(this);
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
part of 'weibo_user_info_resp.dart';
|
part of 'weibo_api_resp.dart';
|
||||||
|
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
// JsonSerializableGenerator
|
// JsonSerializableGenerator
|
52
example/lib/weibo.dart
Normal file
52
example/lib/weibo.dart
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:weibo_kit/weibo_kit.dart';
|
||||||
|
import 'package:weibo_kit_example/model/weibo_api_resp.dart';
|
||||||
|
|
||||||
|
extension ApiWeibo on Weibo {
|
||||||
|
|
||||||
|
/// 用户信息
|
||||||
|
Future<WeiboUserInfoResp> getUserInfo({
|
||||||
|
required String appkey,
|
||||||
|
required String userId,
|
||||||
|
required String accessToken,
|
||||||
|
}) {
|
||||||
|
final Map<String, String> params = <String, String>{
|
||||||
|
'uid': userId,
|
||||||
|
};
|
||||||
|
return HttpClient()
|
||||||
|
.getUrl(_encodeUrl('https://api.weibo.com/2/users/show.json', appkey,
|
||||||
|
accessToken, params))
|
||||||
|
.then((HttpClientRequest request) {
|
||||||
|
return request.close();
|
||||||
|
}).then((HttpClientResponse response) async {
|
||||||
|
if (response.statusCode == HttpStatus.ok) {
|
||||||
|
final String content = await utf8.decodeStream(response);
|
||||||
|
return WeiboUserInfoResp.fromJson(
|
||||||
|
json.decode(content) as Map<String, dynamic>);
|
||||||
|
}
|
||||||
|
throw HttpException(
|
||||||
|
'HttpResponse statusCode: ${response.statusCode}, reasonPhrase: ${response.reasonPhrase}.');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Uri _encodeUrl(
|
||||||
|
String baseUrl,
|
||||||
|
String appkey,
|
||||||
|
String accessToken,
|
||||||
|
Map<String, String> params,
|
||||||
|
) {
|
||||||
|
params['source'] = appkey;
|
||||||
|
params['access_token'] = accessToken;
|
||||||
|
final Uri baseUri = Uri.parse(baseUrl);
|
||||||
|
final Map<String, List<String>> queryParametersAll =
|
||||||
|
Map<String, List<String>>.of(baseUri.queryParametersAll);
|
||||||
|
for (final MapEntry<String, String> entry in params.entries) {
|
||||||
|
queryParametersAll.remove(entry.key);
|
||||||
|
queryParametersAll.putIfAbsent(entry.key, () => <String>[entry.value]);
|
||||||
|
}
|
||||||
|
return baseUri.replace(queryParameters: queryParametersAll);
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,20 @@
|
|||||||
# Generated by pub
|
# Generated by pub
|
||||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||||
packages:
|
packages:
|
||||||
|
_fe_analyzer_shared:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: _fe_analyzer_shared
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "22.0.0"
|
||||||
|
analyzer:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: analyzer
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.7.1"
|
||||||
archive:
|
archive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -8,6 +22,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
|
args:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: args
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -22,6 +43,62 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
build:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.3"
|
||||||
|
build_config:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_config
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "0.4.7"
|
||||||
|
build_daemon:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_daemon
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.10"
|
||||||
|
build_resolvers:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_resolvers
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.4"
|
||||||
|
build_runner:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: build_runner
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.12.2"
|
||||||
|
build_runner_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: build_runner_core
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.12"
|
||||||
|
built_collection:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: built_collection
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "5.1.0"
|
||||||
|
built_value:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: built_value
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "8.1.1"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -36,6 +113,20 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0"
|
||||||
|
checked_yaml:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: checked_yaml
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
|
cli_util:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: cli_util
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.3"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -43,6 +134,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
code_builder:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: code_builder
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "3.7.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -50,6 +148,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.15.0"
|
||||||
|
convert:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: convert
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.1"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -64,6 +169,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
version: "1.0.2"
|
||||||
|
dart_style:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dart_style
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.14"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -85,6 +197,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.0"
|
version: "6.1.0"
|
||||||
|
fixnum:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: fixnum
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -102,6 +221,20 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
glob:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: glob
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
|
graphs:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: graphs
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -109,6 +242,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.13.0"
|
version: "0.13.0"
|
||||||
|
http_multi_server:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: http_multi_server
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.1"
|
||||||
http_parser:
|
http_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -123,13 +263,41 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.0.1"
|
||||||
json_annotation:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: io
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.3"
|
||||||
|
js:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: js
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "0.6.3"
|
||||||
|
json_annotation:
|
||||||
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: json_annotation
|
name: json_annotation
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "4.0.0"
|
||||||
|
json_serializable:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: json_serializable
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.3"
|
||||||
|
logging:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: logging
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -144,6 +312,20 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
|
mime:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: mime
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
|
package_config:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_config
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -214,6 +396,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "2.0.0"
|
||||||
|
pool:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pool
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.5.0"
|
||||||
process:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -221,6 +410,20 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.0"
|
version: "4.1.0"
|
||||||
|
pub_semver:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pub_semver
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
|
pubspec_parse:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pubspec_parse
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -228,11 +431,32 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.26.0"
|
version: "0.26.0"
|
||||||
|
shelf:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.0"
|
||||||
|
shelf_web_socket:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shelf_web_socket
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.99"
|
version: "0.0.99"
|
||||||
|
source_gen:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: source_gen
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "0.9.10+4"
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -268,6 +492,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
stream_transform:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: stream_transform
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
string_scanner:
|
string_scanner:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -296,6 +527,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.0"
|
version: "0.3.0"
|
||||||
|
timing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: timing
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -317,6 +555,20 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
watcher:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: watcher
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
|
web_socket_channel:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: web_socket_channel
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
weibo_kit:
|
weibo_kit:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -345,6 +597,13 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.2"
|
version: "5.0.2"
|
||||||
|
yaml:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: yaml
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.12.0 <3.0.0"
|
dart: ">=2.12.0 <3.0.0"
|
||||||
flutter: ">=1.24.0-10"
|
flutter: ">=1.24.0-10"
|
||||||
|
@ -29,12 +29,17 @@ dependencies:
|
|||||||
image: ^3.0.1
|
image: ^3.0.1
|
||||||
flutter_cache_manager: ^3.0.0-nullsafety.1
|
flutter_cache_manager: ^3.0.0-nullsafety.1
|
||||||
|
|
||||||
|
json_annotation: ^4.0.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
pedantic:
|
pedantic:
|
||||||
|
|
||||||
|
build_runner:
|
||||||
|
json_serializable:
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
import 'package:json_annotation/json_annotation.dart';
|
|
||||||
|
|
||||||
abstract class WeiboApiResp {
|
|
||||||
const WeiboApiResp({
|
|
||||||
required this.errorCode,
|
|
||||||
this.error,
|
|
||||||
this.request,
|
|
||||||
});
|
|
||||||
|
|
||||||
static const int ERROR_CODE_SUCCESS = 0;
|
|
||||||
|
|
||||||
/// https://open.weibo.com/wiki/Help/error
|
|
||||||
@JsonKey(
|
|
||||||
defaultValue: ERROR_CODE_SUCCESS,
|
|
||||||
)
|
|
||||||
final int errorCode;
|
|
||||||
final String? error;
|
|
||||||
final String? request;
|
|
||||||
|
|
||||||
bool get isSuccessful => errorCode == ERROR_CODE_SUCCESS;
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
import 'package:weibo_kit/src/model/sdk/weibo_sdk_resp.dart';
|
import 'package:weibo_kit/src/model/weibo_sdk_resp.dart';
|
||||||
|
|
||||||
part 'weibo_auth_resp.g.dart';
|
part 'weibo_auth_resp.g.dart';
|
||||||
|
|
@ -1,12 +1,10 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:weibo_kit/src/model/api/weibo_user_info_resp.dart';
|
import 'package:weibo_kit/src/model/weibo_auth_resp.dart';
|
||||||
import 'package:weibo_kit/src/model/sdk/weibo_auth_resp.dart';
|
import 'package:weibo_kit/src/model/weibo_sdk_resp.dart';
|
||||||
import 'package:weibo_kit/src/model/sdk/weibo_sdk_resp.dart';
|
|
||||||
|
|
||||||
class Weibo {
|
class Weibo {
|
||||||
///
|
///
|
||||||
@ -115,49 +113,6 @@ class Weibo {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 用户信息
|
|
||||||
Future<WeiboUserInfoResp> getUserInfo({
|
|
||||||
required String appkey,
|
|
||||||
required String userId,
|
|
||||||
required String accessToken,
|
|
||||||
}) {
|
|
||||||
final Map<String, String> params = <String, String>{
|
|
||||||
'uid': userId,
|
|
||||||
};
|
|
||||||
return HttpClient()
|
|
||||||
.getUrl(_encodeUrl('https://api.weibo.com/2/users/show.json', appkey,
|
|
||||||
accessToken, params))
|
|
||||||
.then((HttpClientRequest request) {
|
|
||||||
return request.close();
|
|
||||||
}).then((HttpClientResponse response) async {
|
|
||||||
if (response.statusCode == HttpStatus.ok) {
|
|
||||||
final String content = await utf8.decodeStream(response);
|
|
||||||
return WeiboUserInfoResp.fromJson(
|
|
||||||
json.decode(content) as Map<String, dynamic>);
|
|
||||||
}
|
|
||||||
throw HttpException(
|
|
||||||
'HttpResponse statusCode: ${response.statusCode}, reasonPhrase: ${response.reasonPhrase}.');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Uri _encodeUrl(
|
|
||||||
String baseUrl,
|
|
||||||
String appkey,
|
|
||||||
String accessToken,
|
|
||||||
Map<String, String> params,
|
|
||||||
) {
|
|
||||||
params['source'] = appkey;
|
|
||||||
params['access_token'] = accessToken;
|
|
||||||
final Uri baseUri = Uri.parse(baseUrl);
|
|
||||||
final Map<String, List<String>> queryParametersAll =
|
|
||||||
Map<String, List<String>>.of(baseUri.queryParametersAll);
|
|
||||||
for (final MapEntry<String, String> entry in params.entries) {
|
|
||||||
queryParametersAll.remove(entry.key);
|
|
||||||
queryParametersAll.putIfAbsent(entry.key, () => <String>[entry.value]);
|
|
||||||
}
|
|
||||||
return baseUri.replace(queryParameters: queryParametersAll);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 分享 - 文本
|
/// 分享 - 文本
|
||||||
Future<void> shareText({
|
Future<void> shareText({
|
||||||
required String text,
|
required String text,
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
library weibo_kit;
|
library weibo_kit;
|
||||||
|
|
||||||
export 'src/model/api/weibo_api_resp.dart';
|
export 'src/model/weibo_auth_resp.dart';
|
||||||
export 'src/model/api/weibo_user_info_resp.dart';
|
export 'src/model/weibo_sdk_resp.dart';
|
||||||
export 'src/model/sdk/weibo_auth_resp.dart';
|
|
||||||
export 'src/model/sdk/weibo_sdk_resp.dart';
|
|
||||||
export 'src/weibo.dart';
|
export 'src/weibo.dart';
|
||||||
export 'src/weibo_constant.dart';
|
export 'src/weibo_constant.dart';
|
||||||
|
Loading…
Reference in New Issue
Block a user