implement signin and signup
parent
dcb2966172
commit
10456accec
|
@ -0,0 +1,36 @@
|
||||||
|
import 'package:dio/dio.dart';
|
||||||
|
|
||||||
|
final baseOptions = BaseOptions(
|
||||||
|
baseUrl: 'http://10.0.2.2:8000/api',
|
||||||
|
connectTimeout: const Duration(seconds: 5),
|
||||||
|
receiveTimeout: const Duration(seconds: 5),
|
||||||
|
);
|
||||||
|
|
||||||
|
var request = Dio(baseOptions)
|
||||||
|
..interceptors.add(
|
||||||
|
InterceptorsWrapper(
|
||||||
|
onRequest: (RequestOptions options, RequestInterceptorHandler handler) {
|
||||||
|
String baseUrl = options.baseUrl.replaceFirst('/api', '');
|
||||||
|
options.baseUrl = baseUrl;
|
||||||
|
return handler.next(options);
|
||||||
|
},
|
||||||
|
onResponse: (Response response, ResponseInterceptorHandler handler) {
|
||||||
|
if (response.statusCode! >= 200 && response.statusCode! < 400) {
|
||||||
|
return handler.resolve(response);
|
||||||
|
} else {
|
||||||
|
handler.reject(
|
||||||
|
DioException.badResponse(
|
||||||
|
statusCode: response.statusCode!,
|
||||||
|
requestOptions: RequestOptions(),
|
||||||
|
response: response,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onError: (DioException e, ErrorInterceptorHandler handler) {
|
||||||
|
// print('错误信息:' + e.response?.data);
|
||||||
|
// print('错误码: ${e.response?.statusCode}');
|
||||||
|
handler.reject(e);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
|
@ -1,11 +0,0 @@
|
||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:http/http.dart' as http;
|
|
||||||
|
|
||||||
Future<Map<String, dynamic>> signup() async {
|
|
||||||
final http.Response response = await http
|
|
||||||
.get(Uri.parse('http://10.0.2.2:8000/await'))
|
|
||||||
.timeout(const Duration(seconds: 5));
|
|
||||||
String body = response.body;
|
|
||||||
return jsonDecode(body);
|
|
||||||
}
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
import 'package:dio/dio.dart';
|
||||||
|
import 'package:together_mobile/response_model/base.dart';
|
||||||
|
|
||||||
|
import 'server.dart';
|
||||||
|
|
||||||
|
Future<BaseResponseModel> hasAccountExisted(
|
||||||
|
String condition, String value) async {
|
||||||
|
Response response = await request.get(
|
||||||
|
'/signup/has_existed',
|
||||||
|
queryParameters: {
|
||||||
|
'condition': condition,
|
||||||
|
'value': value,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
return BaseResponseModel.fromJson(response.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> askCode(String email) async {
|
||||||
|
await request.get('/signup/code/$email');
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<BaseResponseModel> signup(
|
||||||
|
String username,
|
||||||
|
String password,
|
||||||
|
String email,
|
||||||
|
String code,
|
||||||
|
) async {
|
||||||
|
Response response = await request.post(
|
||||||
|
'/signup',
|
||||||
|
data: {
|
||||||
|
'username': username,
|
||||||
|
'password': password,
|
||||||
|
'email': email,
|
||||||
|
'code': code,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
return BaseResponseModel.fromJson(response.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<BaseResponseModel> signinByUsername(
|
||||||
|
String username, String password) async {
|
||||||
|
final formData = FormData.fromMap({
|
||||||
|
'username': username,
|
||||||
|
'password': password,
|
||||||
|
});
|
||||||
|
|
||||||
|
Response response = await request.post(
|
||||||
|
'/signin/token/username',
|
||||||
|
data: formData,
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return BaseResponseModel.fromJson(response.data);
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
class BaseResponseModel {
|
||||||
|
late final int code;
|
||||||
|
late final String msg;
|
||||||
|
|
||||||
|
BaseResponseModel.fromJson(Map json) {
|
||||||
|
code = json['code'];
|
||||||
|
msg = json['msg'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:together_mobile/common/constants.dart';
|
import 'package:together_mobile/common/constants.dart';
|
||||||
|
import 'package:together_mobile/request/signup_signin.dart';
|
||||||
|
import 'package:together_mobile/response_model/base.dart';
|
||||||
|
|
||||||
class SignTextField extends StatefulWidget {
|
class SignTextField extends StatefulWidget {
|
||||||
const SignTextField({
|
const SignTextField({
|
||||||
|
@ -8,6 +10,7 @@ class SignTextField extends StatefulWidget {
|
||||||
this.color = kPrimaryColor,
|
this.color = kPrimaryColor,
|
||||||
this.obscureText = false,
|
this.obscureText = false,
|
||||||
required this.type,
|
required this.type,
|
||||||
|
this.isSignup = true,
|
||||||
required this.labelText,
|
required this.labelText,
|
||||||
required this.controller,
|
required this.controller,
|
||||||
required this.isError,
|
required this.isError,
|
||||||
|
@ -16,6 +19,7 @@ class SignTextField extends StatefulWidget {
|
||||||
final Color color;
|
final Color color;
|
||||||
final bool obscureText;
|
final bool obscureText;
|
||||||
final String type;
|
final String type;
|
||||||
|
final bool isSignup;
|
||||||
final String labelText;
|
final String labelText;
|
||||||
final TextEditingController controller;
|
final TextEditingController controller;
|
||||||
final void Function(String, bool) isError;
|
final void Function(String, bool) isError;
|
||||||
|
@ -27,6 +31,53 @@ class SignTextField extends StatefulWidget {
|
||||||
class _SignTextFieldState extends State<SignTextField> {
|
class _SignTextFieldState extends State<SignTextField> {
|
||||||
int _length = 0;
|
int _length = 0;
|
||||||
String? _errorText;
|
String? _errorText;
|
||||||
|
FocusNode? _node;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
if (widget.isSignup) {
|
||||||
|
_node = FocusNode();
|
||||||
|
_node!.addListener(_handleFocusChange);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _handleFocusChange() async {
|
||||||
|
if (!widget.isSignup) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (widget.type) {
|
||||||
|
case 'username' || 'email':
|
||||||
|
if (!_node!.hasFocus) {
|
||||||
|
if (widget.controller.text.isNotEmpty && _errorText == null) {
|
||||||
|
BaseResponseModel res =
|
||||||
|
await hasAccountExisted(widget.type, widget.controller.text);
|
||||||
|
if (widget.type == 'username') {
|
||||||
|
setState(() {
|
||||||
|
res.code == 10100 ? _errorText = null : _errorText = '用户名已存在';
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
res.code == 10100 ? _errorText = null : _errorText = '邮箱已被使用';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
if (widget.isSignup) {
|
||||||
|
_node!.removeListener(_handleFocusChange);
|
||||||
|
_node!.dispose();
|
||||||
|
}
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
@ -39,9 +90,11 @@ class _SignTextFieldState extends State<SignTextField> {
|
||||||
widget.isError(
|
widget.isError(
|
||||||
widget.type,
|
widget.type,
|
||||||
(_errorText == null && widget.controller.text.isEmpty) ||
|
(_errorText == null && widget.controller.text.isEmpty) ||
|
||||||
_errorText != null);
|
_errorText != null,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
controller: widget.controller,
|
controller: widget.controller,
|
||||||
|
focusNode: _node,
|
||||||
obscureText: widget.obscureText,
|
obscureText: widget.obscureText,
|
||||||
cursorColor: widget.color,
|
cursorColor: widget.color,
|
||||||
textAlignVertical: TextAlignVertical.bottom,
|
textAlignVertical: TextAlignVertical.bottom,
|
||||||
|
@ -93,7 +146,7 @@ class _SignTextFieldState extends State<SignTextField> {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'password' || 'password1' || 'password2':
|
case 'password':
|
||||||
if (widget.controller.text.contains(RegExp(r'\s'))) {
|
if (widget.controller.text.contains(RegExp(r'\s'))) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_errorText = '密码不能包含空格';
|
_errorText = '密码不能包含空格';
|
||||||
|
|
|
@ -4,7 +4,7 @@ import 'package:cherry_toast/cherry_toast.dart';
|
||||||
|
|
||||||
import 'common_widgets.dart';
|
import 'common_widgets.dart';
|
||||||
import 'package:together_mobile/common/constants.dart';
|
import 'package:together_mobile/common/constants.dart';
|
||||||
import 'package:together_mobile/request/signin_signup.dart';
|
import 'package:together_mobile/request/signup_signin.dart';
|
||||||
|
|
||||||
class EmailSigninBody extends StatefulWidget {
|
class EmailSigninBody extends StatefulWidget {
|
||||||
const EmailSigninBody({super.key});
|
const EmailSigninBody({super.key});
|
||||||
|
@ -118,7 +118,7 @@ class _EmailSigninBodyState extends State<EmailSigninBody> {
|
||||||
|
|
||||||
if (_isProgressShow && !_isHttpSend) {
|
if (_isProgressShow && !_isHttpSend) {
|
||||||
_isHttpSend = true;
|
_isHttpSend = true;
|
||||||
result = await signup();
|
// result = await signup();
|
||||||
}
|
}
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:cherry_toast/cherry_toast.dart';
|
import 'package:cherry_toast/cherry_toast.dart';
|
||||||
|
import 'package:http/http.dart';
|
||||||
|
import 'package:together_mobile/response_model/base.dart';
|
||||||
|
|
||||||
import 'common_widgets.dart';
|
import 'common_widgets.dart';
|
||||||
import 'package:together_mobile/common/constants.dart';
|
import 'package:together_mobile/common/constants.dart';
|
||||||
import 'package:together_mobile/request/signin_signup.dart';
|
import 'package:together_mobile/request/signup_signin.dart' as signup_request;
|
||||||
|
|
||||||
class SignupBody extends StatefulWidget {
|
class SignupBody extends StatefulWidget {
|
||||||
const SignupBody({super.key});
|
const SignupBody({super.key});
|
||||||
|
@ -19,21 +23,32 @@ class _SignupBodyState extends State<SignupBody> {
|
||||||
|
|
||||||
final TextEditingController usernameController = TextEditingController();
|
final TextEditingController usernameController = TextEditingController();
|
||||||
final TextEditingController passwordController = TextEditingController();
|
final TextEditingController passwordController = TextEditingController();
|
||||||
final TextEditingController phoneEmailController = TextEditingController();
|
final TextEditingController emailController = TextEditingController();
|
||||||
final TextEditingController codeController = TextEditingController();
|
final TextEditingController codeController = TextEditingController();
|
||||||
|
|
||||||
final Map<String, bool> _isError = {
|
final Map<String, bool> _isError = {
|
||||||
'username': false,
|
'username': false,
|
||||||
'password1': false,
|
'password': false,
|
||||||
'password2': false,
|
'email': false,
|
||||||
|
'code': false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int _count = 60;
|
||||||
|
bool _isGetCode = false;
|
||||||
|
|
||||||
void _isInputError(String type, bool error) {
|
void _isInputError(String type, bool error) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_isError[type] = error;
|
_isError[type] = error;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
usernameController.dispose();
|
||||||
|
passwordController.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Column(
|
return Column(
|
||||||
|
@ -69,7 +84,7 @@ class _SignupBodyState extends State<SignupBody> {
|
||||||
color: kSecondaryColor,
|
color: kSecondaryColor,
|
||||||
obscureText: true,
|
obscureText: true,
|
||||||
labelText: '密码',
|
labelText: '密码',
|
||||||
type: 'password1',
|
type: 'password',
|
||||||
controller: passwordController,
|
controller: passwordController,
|
||||||
isError: _isInputError,
|
isError: _isInputError,
|
||||||
),
|
),
|
||||||
|
@ -77,7 +92,7 @@ class _SignupBodyState extends State<SignupBody> {
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 250,
|
width: 250,
|
||||||
child: SignTextField(
|
child: SignTextField(
|
||||||
controller: phoneEmailController,
|
controller: emailController,
|
||||||
color: kSecondaryColor,
|
color: kSecondaryColor,
|
||||||
type: 'email',
|
type: 'email',
|
||||||
labelText: '邮箱',
|
labelText: '邮箱',
|
||||||
|
@ -101,14 +116,19 @@ class _SignupBodyState extends State<SignupBody> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () {},
|
onPressed: () async {
|
||||||
|
await _getCode(context);
|
||||||
|
},
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
foregroundColor: kSecondaryColor,
|
foregroundColor:
|
||||||
// tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
_isGetCode ? kUnActivatedColor : kSecondaryColor,
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
_isGetCode ? '已发送($_count)' : '获取验证码',
|
||||||
|
style: TextStyle(
|
||||||
|
color: _isGetCode ? kUnActivatedColor : kSecondaryColor,
|
||||||
|
fontSize: 15.0,
|
||||||
),
|
),
|
||||||
child: const Text(
|
|
||||||
'获取验证码',
|
|
||||||
style: TextStyle(color: kSecondaryColor, fontSize: 15.0),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -116,7 +136,7 @@ class _SignupBodyState extends State<SignupBody> {
|
||||||
),
|
),
|
||||||
elevatedButton(
|
elevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
confirm(context);
|
_confirm(context);
|
||||||
},
|
},
|
||||||
text: '确定',
|
text: '确定',
|
||||||
color: kSecondaryColor,
|
color: kSecondaryColor,
|
||||||
|
@ -125,40 +145,102 @@ class _SignupBodyState extends State<SignupBody> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void confirm(BuildContext context) async {
|
Future<void> _getCode(BuildContext context) async {
|
||||||
if (_isError['username']! ||
|
if (_isGetCode) {
|
||||||
_isError['password1']! ||
|
_showWarningToast(context, '验证码还在有效期内');
|
||||||
_isError['password2']!) {
|
return;
|
||||||
CherryToast.error(
|
} else if (_isError['email']!) {
|
||||||
title: const Text('账号或密码不符合规范'),
|
_showWarningToast(context, '邮箱格式不正确');
|
||||||
toastDuration: const Duration(seconds: 2),
|
return;
|
||||||
animationDuration: const Duration(seconds: 1),
|
} else if (emailController.text.isEmpty) {
|
||||||
).show(context);
|
_showWarningToast(context, '邮箱不能为空');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await signup_request.askCode(emailController.text);
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
_isGetCode = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
Timer.periodic(const Duration(seconds: 1), (timer) {
|
||||||
|
setState(() {
|
||||||
|
_count--;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (_count == 0) {
|
||||||
|
timer.cancel();
|
||||||
|
setState(() {
|
||||||
|
_isGetCode = false;
|
||||||
|
_count = 60;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _confirm(BuildContext context) async {
|
||||||
|
if (_isError['username']! || _isError['password']!) {
|
||||||
|
_showWarningToast(context, '账号或密码不符合规范');
|
||||||
|
return;
|
||||||
|
} else if (_isError['email']!) {
|
||||||
|
_showWarningToast(context, '邮箱格式不正确');
|
||||||
|
return;
|
||||||
|
} else if (_isError['code']!) {
|
||||||
|
_showWarningToast(context, '验证码格式不正确');
|
||||||
|
return;
|
||||||
|
} else if (emailController.text.isEmpty) {
|
||||||
|
_showWarningToast(context, '邮箱不能为空');
|
||||||
|
return;
|
||||||
|
} else if (codeController.text.isEmpty) {
|
||||||
|
_showWarningToast(context, '验证码不能为空');
|
||||||
|
return;
|
||||||
|
} else if (usernameController.text.isEmpty) {
|
||||||
|
_showWarningToast(context, '用户名不能为空');
|
||||||
|
return;
|
||||||
|
} else if (passwordController.text.isEmpty) {
|
||||||
|
_showWarningToast(context, '密码不能为空');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
late BaseResponseModel res;
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
if (!_isProgressShow) _isProgressShow = true;
|
if (!_isProgressShow) _isProgressShow = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
Map<String, dynamic>? result;
|
|
||||||
|
|
||||||
if (_isProgressShow && !_isHttpSend) {
|
if (_isProgressShow && !_isHttpSend) {
|
||||||
_isHttpSend = true;
|
_isHttpSend = true;
|
||||||
result = await signup();
|
res = await signup_request.signup(
|
||||||
}
|
usernameController.text,
|
||||||
setState(() {
|
passwordController.text,
|
||||||
if (result!['code'] == 10000) {
|
emailController.text,
|
||||||
_isHttpSend = false;
|
codeController.text,
|
||||||
_isProgressShow = false;
|
);
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
setState(() {
|
||||||
void dispose() {
|
_isHttpSend = false;
|
||||||
usernameController.dispose();
|
_isProgressShow = false;
|
||||||
passwordController.dispose();
|
});
|
||||||
super.dispose();
|
|
||||||
|
if (res.code == 10100) {
|
||||||
|
// ignore: use_build_context_synchronously
|
||||||
|
CherryToast.success(
|
||||||
|
title: const Text('注册成功!'),
|
||||||
|
toastDuration: const Duration(seconds: 2),
|
||||||
|
animationDuration: const Duration(seconds: 1),
|
||||||
|
).show(context);
|
||||||
|
} else if (res.code == 10102) {
|
||||||
|
// ignore: use_build_context_synchronously
|
||||||
|
_showWarningToast(context, '验证码错误或已过期');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _showWarningToast(BuildContext context, String text) {
|
||||||
|
CherryToast.warning(
|
||||||
|
title: Text(text),
|
||||||
|
toastDuration: const Duration(seconds: 2),
|
||||||
|
animationDuration: const Duration(seconds: 1),
|
||||||
|
).show(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:cherry_toast/cherry_toast.dart';
|
import 'package:cherry_toast/cherry_toast.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
|
import 'package:together_mobile/response_model/base.dart';
|
||||||
|
|
||||||
import 'common_widgets.dart';
|
import 'common_widgets.dart';
|
||||||
import 'package:together_mobile/common/constants.dart';
|
import 'package:together_mobile/common/constants.dart';
|
||||||
import 'package:together_mobile/request/signin_signup.dart';
|
import 'package:together_mobile/request/signup_signin.dart';
|
||||||
|
|
||||||
class UsernameSigninBody extends StatefulWidget {
|
class UsernameSigninBody extends StatefulWidget {
|
||||||
const UsernameSigninBody({super.key});
|
const UsernameSigninBody({super.key});
|
||||||
|
@ -15,8 +16,8 @@ class UsernameSigninBody extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _UsernameSigninBodyState extends State<UsernameSigninBody> {
|
class _UsernameSigninBodyState extends State<UsernameSigninBody> {
|
||||||
final bool _isProgressShow = false;
|
bool _isProgressShow = false;
|
||||||
final bool _isHttpSend = false;
|
bool _isHttpSend = false;
|
||||||
|
|
||||||
final TextEditingController usernameController = TextEditingController();
|
final TextEditingController usernameController = TextEditingController();
|
||||||
final TextEditingController passwordController = TextEditingController();
|
final TextEditingController passwordController = TextEditingController();
|
||||||
|
@ -56,6 +57,7 @@ class _UsernameSigninBodyState extends State<UsernameSigninBody> {
|
||||||
child: SignTextField(
|
child: SignTextField(
|
||||||
labelText: '用户名',
|
labelText: '用户名',
|
||||||
type: 'username',
|
type: 'username',
|
||||||
|
isSignup: false,
|
||||||
controller: usernameController,
|
controller: usernameController,
|
||||||
isError: _isInputError,
|
isError: _isInputError,
|
||||||
),
|
),
|
||||||
|
@ -69,6 +71,7 @@ class _UsernameSigninBodyState extends State<UsernameSigninBody> {
|
||||||
child: SignTextField(
|
child: SignTextField(
|
||||||
obscureText: true,
|
obscureText: true,
|
||||||
labelText: '密码',
|
labelText: '密码',
|
||||||
|
isSignup: false,
|
||||||
type: 'password',
|
type: 'password',
|
||||||
controller: passwordController,
|
controller: passwordController,
|
||||||
isError: _isInputError,
|
isError: _isInputError,
|
||||||
|
@ -80,42 +83,48 @@ class _UsernameSigninBodyState extends State<UsernameSigninBody> {
|
||||||
),
|
),
|
||||||
elevatedButton(
|
elevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
confirm(context);
|
_signin(context);
|
||||||
},
|
},
|
||||||
text: '确定',
|
text: '登录',
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void confirm(BuildContext context) async {
|
void _signin(BuildContext context) async {
|
||||||
// if (_isError['username']! || _isError['password']!) {
|
if (_isError['username']! || _isError['password']!) {
|
||||||
// CherryToast.error(
|
CherryToast.error(
|
||||||
// title: const Text('账号或密码不符合规范'),
|
title: const Text('账号或密码不符合规范'),
|
||||||
// toastDuration: const Duration(seconds: 2),
|
toastDuration: const Duration(seconds: 2),
|
||||||
// animationDuration: const Duration(seconds: 1),
|
animationDuration: const Duration(seconds: 1),
|
||||||
// ).show(context);
|
).show(context);
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// setState(() {
|
setState(() {
|
||||||
// if (!_isProgressShow) _isProgressShow = true;
|
if (!_isProgressShow) _isProgressShow = true;
|
||||||
// });
|
});
|
||||||
|
|
||||||
// Map<String, dynamic>? result;
|
late BaseResponseModel result;
|
||||||
|
|
||||||
// if (_isProgressShow && !_isHttpSend) {
|
if (_isProgressShow && !_isHttpSend) {
|
||||||
// _isHttpSend = true;
|
_isHttpSend = true;
|
||||||
// result = await signup();
|
result = await signinByUsername(
|
||||||
// }
|
usernameController.text, passwordController.text);
|
||||||
// setState(() {
|
}
|
||||||
// if (result!['code'] == 10000) {
|
|
||||||
// _isHttpSend = false;
|
|
||||||
// _isProgressShow = false;
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
_isHttpSend = false;
|
||||||
|
_isProgressShow = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (result.code == 10200) {
|
||||||
|
// ignore: use_build_context_synchronously
|
||||||
context.go('/chat');
|
context.go('/chat');
|
||||||
|
} else {
|
||||||
|
// ignore: use_build_context_synchronously
|
||||||
|
CherryToast.error(title: const Text('用户名或密码错误')).show(context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
192
pubspec.lock
192
pubspec.lock
|
@ -6,7 +6,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
|
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.2"
|
version: "2.4.2"
|
||||||
async:
|
async:
|
||||||
|
@ -14,7 +14,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.11.0"
|
version: "2.11.0"
|
||||||
badges:
|
badges:
|
||||||
|
@ -22,7 +22,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: badges
|
name: badges
|
||||||
sha256: "6e7f3ec561ec08f47f912cfe349d4a1707afdc8dda271e17b046aa6d42c89e77"
|
sha256: "6e7f3ec561ec08f47f912cfe349d4a1707afdc8dda271e17b046aa6d42c89e77"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.1"
|
version: "3.1.1"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
|
@ -30,7 +30,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: boolean_selector
|
name: boolean_selector
|
||||||
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
characters:
|
characters:
|
||||||
|
@ -38,7 +38,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
cherry_toast:
|
cherry_toast:
|
||||||
|
@ -46,7 +46,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: cherry_toast
|
name: cherry_toast
|
||||||
sha256: a52fe28040cc80490ebaf1dfebaf17f8c7debb4fe5bf6e84d2a57b04b9c04569
|
sha256: a52fe28040cc80490ebaf1dfebaf17f8c7debb4fe5bf6e84d2a57b04b9c04569
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.1"
|
||||||
clock:
|
clock:
|
||||||
|
@ -54,7 +54,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.1"
|
||||||
collection:
|
collection:
|
||||||
|
@ -62,7 +62,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
|
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.17.1"
|
version: "1.17.1"
|
||||||
cross_file:
|
cross_file:
|
||||||
|
@ -70,7 +70,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: cross_file
|
name: cross_file
|
||||||
sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9"
|
sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.3+4"
|
version: "0.3.3+4"
|
||||||
crypto:
|
crypto:
|
||||||
|
@ -78,7 +78,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.3"
|
version: "3.0.3"
|
||||||
csslib:
|
csslib:
|
||||||
|
@ -86,7 +86,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: csslib
|
name: csslib
|
||||||
sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
|
sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
dbus:
|
dbus:
|
||||||
|
@ -94,15 +94,23 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: dbus
|
name: dbus
|
||||||
sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263"
|
sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.8"
|
version: "0.7.8"
|
||||||
|
dio:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: dio
|
||||||
|
sha256: a9d76e72985d7087eb7c5e7903224ae52b337131518d127c554b9405936752b8
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.2.1+1"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
version: "1.3.1"
|
||||||
ffi:
|
ffi:
|
||||||
|
@ -110,7 +118,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
|
sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2"
|
version: "2.0.2"
|
||||||
file:
|
file:
|
||||||
|
@ -118,41 +126,41 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.4"
|
version: "6.1.4"
|
||||||
file_selector_linux:
|
file_selector_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_linux
|
name: file_selector_linux
|
||||||
sha256: d17c5e450192cdc40b718804dfb4eaf79a71bed60ee9530703900879ba50baa3
|
sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.1+3"
|
version: "0.9.2"
|
||||||
file_selector_macos:
|
file_selector_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_macos
|
name: file_selector_macos
|
||||||
sha256: "6290eec24fc4cc62535fe609e0c6714d3c1306191dc8c3b0319eaecc09423a3a"
|
sha256: "7a6f1ae6107265664f3f7f89a66074882c4d506aef1441c9af313c1f7e6f41ce"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.2"
|
version: "0.9.3"
|
||||||
file_selector_platform_interface:
|
file_selector_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_platform_interface
|
name: file_selector_platform_interface
|
||||||
sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c"
|
sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.0"
|
version: "2.6.0"
|
||||||
file_selector_windows:
|
file_selector_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_windows
|
name: file_selector_windows
|
||||||
sha256: ef246380b66d1fb9089fc65622c387bf3780bca79f533424c31d07f12c2c7fd8
|
sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.2"
|
version: "0.9.3"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -162,16 +170,16 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: flutter_lints
|
name: flutter_lints
|
||||||
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
|
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "2.0.2"
|
||||||
flutter_local_notifications:
|
flutter_local_notifications:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_local_notifications
|
name: flutter_local_notifications
|
||||||
sha256: "812791d43ccfc1b443a0d39fa02a206fc228c597e28ff9337e09e3ca8d370391"
|
sha256: "812791d43ccfc1b443a0d39fa02a206fc228c597e28ff9337e09e3ca8d370391"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.1.1"
|
version: "14.1.1"
|
||||||
flutter_local_notifications_linux:
|
flutter_local_notifications_linux:
|
||||||
|
@ -179,7 +187,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: flutter_local_notifications_linux
|
name: flutter_local_notifications_linux
|
||||||
sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03"
|
sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0+1"
|
version: "4.0.0+1"
|
||||||
flutter_local_notifications_platform_interface:
|
flutter_local_notifications_platform_interface:
|
||||||
|
@ -187,7 +195,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: flutter_local_notifications_platform_interface
|
name: flutter_local_notifications_platform_interface
|
||||||
sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef"
|
sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.0+1"
|
version: "7.0.0+1"
|
||||||
flutter_plugin_android_lifecycle:
|
flutter_plugin_android_lifecycle:
|
||||||
|
@ -195,7 +203,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: flutter_plugin_android_lifecycle
|
name: flutter_plugin_android_lifecycle
|
||||||
sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360"
|
sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.15"
|
version: "2.0.15"
|
||||||
flutter_slidable:
|
flutter_slidable:
|
||||||
|
@ -203,7 +211,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: flutter_slidable
|
name: flutter_slidable
|
||||||
sha256: cc4231579e3eae41ae166660df717f4bad1359c87f4a4322ad8ba1befeb3d2be
|
sha256: cc4231579e3eae41ae166660df717f4bad1359c87f4a4322ad8ba1befeb3d2be
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0"
|
version: "3.0.0"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
@ -215,10 +223,10 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_timezone
|
name: flutter_timezone
|
||||||
sha256: "9b179c76cbded894e3208b420d0c4286f6c9ab7178c063eba8bc4266a3ee1a3c"
|
sha256: "4508018aba499c837f723e2e718259eb677410490638b7ea669b11113d083e68"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.7"
|
||||||
flutter_web_plugins:
|
flutter_web_plugins:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -229,7 +237,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: go_router
|
name: go_router
|
||||||
sha256: "00d1b67d6e9fa443331da229084dd3eb04407f5a2dff22940bd7bba6af5722c3"
|
sha256: "00d1b67d6e9fa443331da229084dd3eb04407f5a2dff22940bd7bba6af5722c3"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.1.1"
|
version: "7.1.1"
|
||||||
google_fonts:
|
google_fonts:
|
||||||
|
@ -237,7 +245,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: google_fonts
|
name: google_fonts
|
||||||
sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6"
|
sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.4"
|
version: "4.0.4"
|
||||||
html:
|
html:
|
||||||
|
@ -245,7 +253,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: html
|
name: html
|
||||||
sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
|
sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.15.4"
|
version: "0.15.4"
|
||||||
http:
|
http:
|
||||||
|
@ -253,7 +261,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
|
sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.13.6"
|
version: "0.13.6"
|
||||||
http_parser:
|
http_parser:
|
||||||
|
@ -261,7 +269,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: http_parser
|
name: http_parser
|
||||||
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
|
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.2"
|
||||||
image_picker:
|
image_picker:
|
||||||
|
@ -269,7 +277,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker
|
name: image_picker
|
||||||
sha256: b6951e25b795d053a6ba03af5f710069c99349de9341af95155d52665cb4607c
|
sha256: b6951e25b795d053a6ba03af5f710069c99349de9341af95155d52665cb4607c
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.9"
|
version: "0.8.9"
|
||||||
image_picker_android:
|
image_picker_android:
|
||||||
|
@ -277,7 +285,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker_android
|
name: image_picker_android
|
||||||
sha256: d2bab152deb2547ea6f53d82ebca9b7e77386bb706e5789e815d37e08ea475bb
|
sha256: d2bab152deb2547ea6f53d82ebca9b7e77386bb706e5789e815d37e08ea475bb
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.7+3"
|
version: "0.8.7+3"
|
||||||
image_picker_for_web:
|
image_picker_for_web:
|
||||||
|
@ -285,7 +293,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker_for_web
|
name: image_picker_for_web
|
||||||
sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0"
|
sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.2.0"
|
||||||
image_picker_ios:
|
image_picker_ios:
|
||||||
|
@ -293,7 +301,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker_ios
|
name: image_picker_ios
|
||||||
sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b
|
sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.8"
|
version: "0.8.8"
|
||||||
image_picker_linux:
|
image_picker_linux:
|
||||||
|
@ -301,7 +309,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker_linux
|
name: image_picker_linux
|
||||||
sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831"
|
sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.1"
|
version: "0.2.1"
|
||||||
image_picker_macos:
|
image_picker_macos:
|
||||||
|
@ -309,7 +317,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker_macos
|
name: image_picker_macos
|
||||||
sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4
|
sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.1"
|
version: "0.2.1"
|
||||||
image_picker_platform_interface:
|
image_picker_platform_interface:
|
||||||
|
@ -317,7 +325,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker_platform_interface
|
name: image_picker_platform_interface
|
||||||
sha256: "7c7b96bb9413a9c28229e717e6fd1e3edd1cc5569c1778fcca060ecf729b65ee"
|
sha256: "7c7b96bb9413a9c28229e717e6fd1e3edd1cc5569c1778fcca060ecf729b65ee"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.0"
|
version: "2.8.0"
|
||||||
image_picker_windows:
|
image_picker_windows:
|
||||||
|
@ -325,7 +333,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: image_picker_windows
|
name: image_picker_windows
|
||||||
sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952
|
sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.1"
|
version: "0.2.1"
|
||||||
js:
|
js:
|
||||||
|
@ -333,7 +341,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: js
|
name: js
|
||||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.7"
|
version: "0.6.7"
|
||||||
lints:
|
lints:
|
||||||
|
@ -341,15 +349,15 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: lints
|
name: lints
|
||||||
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
|
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: logging
|
name: logging
|
||||||
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
|
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0"
|
||||||
matcher:
|
matcher:
|
||||||
|
@ -357,7 +365,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
|
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.15"
|
version: "0.12.15"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
|
@ -365,7 +373,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.2.0"
|
||||||
meta:
|
meta:
|
||||||
|
@ -373,7 +381,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.9.1"
|
||||||
mime:
|
mime:
|
||||||
|
@ -381,7 +389,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: mime
|
name: mime
|
||||||
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "1.0.4"
|
||||||
nested:
|
nested:
|
||||||
|
@ -389,7 +397,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: nested
|
name: nested
|
||||||
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
|
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
path:
|
path:
|
||||||
|
@ -397,7 +405,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.3"
|
version: "1.8.3"
|
||||||
path_provider:
|
path_provider:
|
||||||
|
@ -405,7 +413,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
|
sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.15"
|
version: "2.0.15"
|
||||||
path_provider_android:
|
path_provider_android:
|
||||||
|
@ -413,7 +421,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86"
|
sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.27"
|
version: "2.0.27"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
|
@ -421,7 +429,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
|
sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.3"
|
version: "2.2.3"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
|
@ -429,7 +437,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: path_provider_linux
|
name: path_provider_linux
|
||||||
sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
|
sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.11"
|
version: "2.1.11"
|
||||||
path_provider_platform_interface:
|
path_provider_platform_interface:
|
||||||
|
@ -437,7 +445,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: path_provider_platform_interface
|
name: path_provider_platform_interface
|
||||||
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
|
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.6"
|
version: "2.0.6"
|
||||||
path_provider_windows:
|
path_provider_windows:
|
||||||
|
@ -445,7 +453,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
|
sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.7"
|
version: "2.1.7"
|
||||||
petitparser:
|
petitparser:
|
||||||
|
@ -453,7 +461,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: petitparser
|
name: petitparser
|
||||||
sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
|
sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.4.0"
|
version: "5.4.0"
|
||||||
platform:
|
platform:
|
||||||
|
@ -461,7 +469,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.0"
|
version: "3.1.0"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
|
@ -469,7 +477,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: plugin_platform_interface
|
name: plugin_platform_interface
|
||||||
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
|
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
process:
|
process:
|
||||||
|
@ -477,7 +485,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: process
|
name: process
|
||||||
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.4"
|
version: "4.2.4"
|
||||||
provider:
|
provider:
|
||||||
|
@ -485,7 +493,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: provider
|
name: provider
|
||||||
sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
|
sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.5"
|
version: "6.0.5"
|
||||||
reorderables:
|
reorderables:
|
||||||
|
@ -493,7 +501,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: reorderables
|
name: reorderables
|
||||||
sha256: "004a886e4878df1ee27321831c838bc1c976311f4ca6a74ce7d561e506540a77"
|
sha256: "004a886e4878df1ee27321831c838bc1c976311f4ca6a74ce7d561e506540a77"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.0"
|
version: "0.6.0"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
|
@ -506,7 +514,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.9.1"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
|
@ -514,7 +522,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.11.0"
|
version: "1.11.0"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
|
@ -522,7 +530,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
string_scanner:
|
string_scanner:
|
||||||
|
@ -530,7 +538,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
|
@ -538,7 +546,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.1"
|
||||||
test_api:
|
test_api:
|
||||||
|
@ -546,7 +554,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
|
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.1"
|
version: "0.5.1"
|
||||||
timezone:
|
timezone:
|
||||||
|
@ -554,7 +562,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: timezone
|
name: timezone
|
||||||
sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0"
|
sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.2"
|
version: "0.9.2"
|
||||||
typed_data:
|
typed_data:
|
||||||
|
@ -562,7 +570,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.2"
|
version: "1.3.2"
|
||||||
vector_math:
|
vector_math:
|
||||||
|
@ -570,23 +578,23 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
video_player:
|
video_player:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: video_player
|
name: video_player
|
||||||
sha256: de95f0e9405f29b5582573d4166132e71f83b3158aac14e8ee5767a54f4f1fbd
|
sha256: "3fd106c74da32f336dc7feb65021da9b0207cb3124392935f1552834f7cce822"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.6.1"
|
version: "2.7.0"
|
||||||
video_player_android:
|
video_player_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: video_player_android
|
name: video_player_android
|
||||||
sha256: f338a5a396c845f4632959511cad3542cdf3167e1b2a1a948ef07f7123c03608
|
sha256: f338a5a396c845f4632959511cad3542cdf3167e1b2a1a948ef07f7123c03608
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.9"
|
version: "2.4.9"
|
||||||
video_player_avfoundation:
|
video_player_avfoundation:
|
||||||
|
@ -594,7 +602,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: video_player_avfoundation
|
name: video_player_avfoundation
|
||||||
sha256: "4c274e439f349a0ee5cb3c42978393ede173a443b98f50de6ffe6900eaa19216"
|
sha256: "4c274e439f349a0ee5cb3c42978393ede173a443b98f50de6ffe6900eaa19216"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.6"
|
version: "2.4.6"
|
||||||
video_player_platform_interface:
|
video_player_platform_interface:
|
||||||
|
@ -602,7 +610,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: video_player_platform_interface
|
name: video_player_platform_interface
|
||||||
sha256: a8c4dcae2a7a6e7cc1d7f9808294d968eca1993af34a98e95b9bdfa959bec684
|
sha256: a8c4dcae2a7a6e7cc1d7f9808294d968eca1993af34a98e95b9bdfa959bec684
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.0"
|
version: "6.1.0"
|
||||||
video_player_web:
|
video_player_web:
|
||||||
|
@ -610,23 +618,23 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: video_player_web
|
name: video_player_web
|
||||||
sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c"
|
sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.16"
|
version: "2.0.16"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: "1414f27dd781737e51afa9711f2ac2ace6ab4498ee98e20863fa5505aa00c58c"
|
sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.4"
|
version: "5.0.5"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
|
sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
xml:
|
xml:
|
||||||
|
@ -634,7 +642,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
name: xml
|
name: xml
|
||||||
sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
|
sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.0"
|
version: "6.3.0"
|
||||||
sdks:
|
sdks:
|
||||||
|
|
|
@ -30,6 +30,7 @@ environment:
|
||||||
dependencies:
|
dependencies:
|
||||||
badges: ^3.1.1
|
badges: ^3.1.1
|
||||||
cherry_toast: ^1.2.1
|
cherry_toast: ^1.2.1
|
||||||
|
dio: ^5.2.1+1
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
flutter_local_notifications: ^14.1.1
|
flutter_local_notifications: ^14.1.1
|
||||||
|
@ -39,6 +40,7 @@ dependencies:
|
||||||
google_fonts: ^4.0.0
|
google_fonts: ^4.0.0
|
||||||
http: ^0.13.0
|
http: ^0.13.0
|
||||||
image_picker: ^0.8.7+5
|
image_picker: ^0.8.7+5
|
||||||
|
logging: ^1.2.0
|
||||||
provider: ^6.0.5
|
provider: ^6.0.5
|
||||||
reorderables: ^0.6.0
|
reorderables: ^0.6.0
|
||||||
timezone: ^0.9.2
|
timezone: ^0.9.2
|
||||||
|
|
Loading…
Reference in New Issue