diff --git a/lib/app/app.dart b/lib/app/app.dart index 924be47..292f38d 100644 --- a/lib/app/app.dart +++ b/lib/app/app.dart @@ -2,8 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:wow_english/app/transition_page.dart'; -import 'package:wow_english/login/login_page.dart'; import 'package:wow_english/route/route.dart'; import 'package:wow_english/tab/blocs/tab_bloc.dart'; diff --git a/lib/app/transition_page.dart b/lib/app/splash_page.dart index ee4421d..c0ac356 100644 --- a/lib/app/transition_page.dart +++ b/lib/app/splash_page.dart @@ -1,9 +1,11 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:wow_english/network/basic_configuration.dart'; import 'package:wow_english/route/route.dart'; import 'package:wow_english/widgets/we_app_bar.dart'; -class TransitionPage extends StatelessWidget { - const TransitionPage({super.key}); +class SplashPage extends StatelessWidget { + const SplashPage({super.key}); @override Widget build(BuildContext context) { @@ -31,7 +33,11 @@ class _TransitionViewState extends State { body: Center( child: GestureDetector( onTap: (){ - Navigator.of(context).pushNamed(AppRouteName.login,arguments: {'title':'登陆'}); + if(BasicConfigurationManager().sessionId!.isNotEmpty) { + Navigator.of(context).pushNamedAndRemoveUntil(AppRouteName.tab, (route) => false); + } else { + Navigator.of(context).pushNamed(AppRouteName.login,arguments: {'title':'登陆'}); + } }, child: const Text('登陆'), ), diff --git a/lib/login/login_page.dart b/lib/login/login_page.dart index 1a043d5..a42a079 100644 --- a/lib/login/login_page.dart +++ b/lib/login/login_page.dart @@ -13,7 +13,6 @@ class LoginPage extends StatelessWidget { @override Widget build(BuildContext context) { - // TODO: implement build return BlocProvider( create: (context) => LoginBloc(), child: _buildLoginViewWidget(), @@ -25,7 +24,6 @@ class LoginPage extends StatelessWidget { final bloc = BlocProvider.of(context); return Scaffold( appBar: WEAppBar( - backgroundColor: Theme.of(context).colorScheme.inversePrimary, titleText: title??'', ), body: Center( diff --git a/lib/modes/response_model.dart b/lib/modes/response_model.dart new file mode 100644 index 0000000..3f891db --- /dev/null +++ b/lib/modes/response_model.dart @@ -0,0 +1,16 @@ +import 'package:json_annotation/json_annotation.dart'; + +part 'response_model.g.dart'; + +@JsonSerializable() +class ResponseModel { + int? code; + dynamic data; + String? msg; + + ResponseModel(this.code,this.data,this.msg); + + factory ResponseModel.fromJson(Map json) => _$ResponseModelFromJson(json); + + Map toJson() => _$ResponseModelToJson(this); +} diff --git a/lib/modes/response_model.g.dart b/lib/modes/response_model.g.dart new file mode 100644 index 0000000..81a714a --- /dev/null +++ b/lib/modes/response_model.g.dart @@ -0,0 +1,21 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'response_model.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +ResponseModel _$ResponseModelFromJson(Map json) => + ResponseModel( + json['code'] as int?, + json['data'], + json['msg'] as String?, + ); + +Map _$ResponseModelToJson(ResponseModel instance) => + { + 'code': instance.code, + 'data': instance.data, + 'msg': instance.msg, + }; diff --git a/lib/network/api.dart b/lib/network/api.dart index d882419..98cf196 100644 --- a/lib/network/api.dart +++ b/lib/network/api.dart @@ -1,3 +1,3 @@ class Api { - static const String testApi = 'https://dart.dev'; + static const String testApi = 'home/courseLesson'; } \ No newline at end of file diff --git a/lib/network/basic_configuration.dart b/lib/network/basic_configuration.dart new file mode 100644 index 0000000..ed65158 --- /dev/null +++ b/lib/network/basic_configuration.dart @@ -0,0 +1,36 @@ +enum DevelopEvent { + ///开发环境 + dev, + ///测试环境 + test, + ///正式环境 + formal +} + +class BasicConfigurationManager { + factory BasicConfigurationManager() => _getInstance(); + + static BasicConfigurationManager? _instance; + + //服务器地址 + String? baseUrl; + //SessionId + String? sessionId; + + BasicConfigurationManager._internal(){ + DevelopEvent developType = DevelopEvent.dev; + if (developType == DevelopEvent.test) { + baseUrl = 'http://wow-app.dev.kouyuxingqiu.com'; + } else if(developType == DevelopEvent.dev) { + baseUrl = 'http://wow-app.dev.kouyuxingqiu.com'; + } else { + baseUrl = 'http://wow-app.dev.kouyuxingqiu.com'; + } + sessionId = ''; + } + + static BasicConfigurationManager _getInstance() { + _instance ??= BasicConfigurationManager._internal(); + return _instance!; + } +} \ No newline at end of file diff --git a/lib/network/network_manager.dart b/lib/network/network_manager.dart index 98a7cb7..e56514d 100644 --- a/lib/network/network_manager.dart +++ b/lib/network/network_manager.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:wow_english/network/basic_configuration.dart'; enum HttpMethod { get, @@ -24,9 +25,10 @@ class DioUtil { static BaseOptions getDefOptions() { final BaseOptions options = BaseOptions(); - options.baseUrl = ''; + options.baseUrl = BasicConfigurationManager().baseUrl??''; options.connectTimeout = const Duration(milliseconds: 1000); options.receiveTimeout = const Duration(milliseconds: 1000); + options.headers['content-type'] = 'application/x-www-form-urlencoded'; return options; } @@ -41,12 +43,17 @@ class DioUtil { required Function errorCallBack, }) async{ try { + Map headers = {}; + + if (method == HttpMethod.post) { + headers['content-type'] = 'application/x-www-form-urlencoded'; + } Response response; response = await _dio.request( path, data: data??{}, queryParameters: queryParameters, - options: Options(method: method.name), + options: Options(method: method.name,headers: headers), onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress); if (response.statusCode == HttpStatus.ok || diff --git a/lib/route/route.dart b/lib/route/route.dart index 9300d65..a62269a 100644 --- a/lib/route/route.dart +++ b/lib/route/route.dart @@ -1,6 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:wow_english/app/transition_page.dart'; +import 'package:wow_english/app/splash_page.dart'; import 'package:wow_english/login/login_page.dart'; import 'package:wow_english/tab/tab_page.dart'; @@ -21,7 +21,7 @@ class AppRouter { case AppRouteName.splash: return PageRouteBuilder( opaque: false, - pageBuilder: (_,__,___) => const TransitionPage(), + pageBuilder: (_,__,___) => const SplashPage(), transitionDuration: Duration.zero, transitionsBuilder: (_, __, ___, child) => child); case AppRouteName.login: diff --git a/lib/widgets/we_app_bar.dart b/lib/widgets/we_app_bar.dart index 0ee0da1..a40fae7 100644 --- a/lib/widgets/we_app_bar.dart +++ b/lib/widgets/we_app_bar.dart @@ -19,7 +19,7 @@ class WEAppBar extends StatelessWidget implements PreferredSizeWidget { return AppBar( centerTitle: centerTitle, title: Text(titleText??''), - backgroundColor: backgroundColor, + backgroundColor: backgroundColor??Theme.of(context).colorScheme.inversePrimary, ); }