Browse Source

fix error

liuyuqi-dellpc 9 months ago
parent
commit
79fbc30800

+ 7 - 7
lib/dio/api.dart

@@ -5,13 +5,13 @@ import 'package:flutter_tracker/model/user_model.dart';
 /// Author     : liuyuqi.gov@msncn
 abstract class Api {
   static const String _host = "http://flutter.yoqi.me/Track";
-  static String loginUrl = _host + "/loginByPass";
-  static String logoutUrl = _host + "/logout";
-  static String registerUrl = _host + "/register";
-  static String getUserInfoUrl = _host + "/getUserInfo";
-  static String getUserByDeviceId = _host + "'getUserByDeviceId";
-  static String uploadImgUrl = _host + "/uploadImg";
-  static String uploadTrackUrl = _host + "/uploadTrack";
+  static String loginUrl = "$_host/loginByPass";
+  static String logoutUrl = "$_host/logout";
+  static String registerUrl = "$_host/register";
+  static String getUserInfoUrl = "$_host/getUserInfo";
+  static String getUserByDeviceId = "$_host'getUserByDeviceId";
+  static String uploadImgUrl = "$_host/uploadImg";
+  static String uploadTrackUrl = "$_host/uploadTrack";
 
   Future<UserModel> login(String username, String password);
 }

+ 9 - 9
lib/dio/login_dao.dart

@@ -1,7 +1,7 @@
 import 'package:dio/dio.dart';
 import 'package:flutter_tracker/dio/api.dart';
+import 'package:flutter_tracker/model/base_model.dart';
 import 'package:flutter_tracker/model/login_entity.dart';
-import 'package:flutter_tracker/model/message_model.dart';
 import 'package:flutter_tracker/model/user_model.dart';
 
 /// Description:
@@ -11,35 +11,35 @@ class LoginDao {
   static Map<String, dynamic> params = <String, dynamic>{};
 
   /// login
-  static Future<LoginEntity?> login(String username, String password) async {
+  static Future<LoginEntity> login(String username, String password) async {
     params.addAll({"username": username, "password": password});
     try {
       Response response = await Dio().post(Api.loginUrl, data: params);
       return LoginEntity.fromJson(response.data);
     } catch (e) {
-      return null;
+      return LoginEntity.fromJson({"success": false, "msg": "网络错误"});
     }
   }
 
   /// logout
-  static Future<MessageModel> logout(String token) async {
+  static Future<BaseModel> logout(String token) async {
     params.addAll({"token": token});
     try {
       Response response = await Dio().post(Api.logoutUrl, data: params);
-      return MessageModel.fromJson(response.data);
+      return BaseModel.fromJson(response.data);
     } catch (e) {
-      return MessageModel.fromJson({"success": false, "msg": "网络错误"});
+      return BaseModel.fromJson({"success": false, "msg": "网络错误"});
     }
   }
 
-  static Future<MessageModel> register(String username, String password) async {
+  static Future<BaseModel> register(String username, String password) async {
     params.addAll({"username": username, "password": password});
     try {
       Response response = await Dio().post(Api.registerUrl, data: params);
       if (response.data["success"] == true) {}
-      return MessageModel.fromJson(response.data);
+      return BaseModel.fromJson(response.data);
     } catch (e) {
-      return MessageModel.fromJson({"success": false, "msg": "网络错误"});
+      return BaseModel.fromJson({"success": false, "msg": "网络错误"});
     }
   }
 

+ 11 - 9
lib/main.dart

@@ -26,15 +26,17 @@ class MyApp extends StatelessWidget {
   Widget build(BuildContext context) {
     return ScreenUtilInit(
       designSize: const Size(750, 1344),
-      builder: () => MaterialApp(
-        title: '追踪者',
-        theme: ThemeData(
-          primarySwatch: Colors.blue,
-        ),
-        debugShowCheckedModeBanner: false,
-        home: isLogin ? IndexPage() : WelComePage(),
-        onGenerateRoute: Routes.generateRoute,
-      ),
+      builder: (BuildContext context, Widget? child) {
+        return MaterialApp(
+          title: '追踪者',
+          theme: ThemeData(
+            primarySwatch: Colors.blue,
+          ),
+          debugShowCheckedModeBanner: false,
+          home: isLogin ? const IndexPage() : const WelComePage(),
+          onGenerateRoute: Routes.generateRoute,
+        );
+      },
     );
   }
 }

+ 3 - 3
lib/model/base_model.dart

@@ -2,15 +2,15 @@
 /// Time       : 2021年12月03日 Friday
 /// Author     : liuyuqi.gov@msncn
 class BaseModel<T> {
-  String msg = "";
+  String msg = "网络异常";
   bool success = false;
   T? data;
 
-  BaseModel({ this.msg="网络异常",  this.success=false,  this.data});
+  BaseModel({this.msg = "网络异常", this.success = false, this.data});
 
   BaseModel.fromJson(Map<String, dynamic> json) {
     msg = json["msg"];
     success = json["success"];
     data = json["data"];
   }
-}
+}

+ 13 - 9
lib/model/login_entity.dart

@@ -1,19 +1,23 @@
 import 'package:flutter_tracker/model/base_model.dart';
-import 'package:flutter_tracker/model/message_model.dart';
 
 /// Description:
 /// Time       : 2021年12月03日 Friday
 /// Author     : liuyuqi.gov@msncn
 class LoginEntity extends BaseModel {
-  String token = "";
-  MessageModel msgModel = MessageModel(msg: "网络异常", success: false);
-
-  LoginEntity({required this.token, required this.msgModel});
+  late LoginModel loginModel;
 
   LoginEntity.fromJson(Map<String, dynamic> json) {
-    msgModel = MessageModel.fromJson(json);
-    if (msgModel.success) {
-      token = json["data"]["token"];
+    LoginEntity base = BaseModel.fromJson(json) as LoginEntity;
+    if (base.success) {
+      loginModel = LoginModel.fromJson(json["data"]);
     }
   }
-}
+}
+
+class LoginModel {
+  String token = "";
+  LoginModel(this.token);
+  LoginModel.fromJson(Map<String, dynamic> json) {
+    token = json["token"];
+  }
+}

+ 0 - 16
lib/model/message_model.dart

@@ -1,16 +0,0 @@
-/// Description:
-/// Time       : 2021年12月03日 Friday
-/// Author     : liuyuqi.gov@msncn
-class MessageModel<T> {
-  String msg = "";
-  bool success = false;
-  T? data;
-
-  MessageModel({this.msg = "", this.success = false, this.data});
-
-  MessageModel.fromJson(Map<String, dynamic> json) {
-    msg = json["msg"];
-    success = json["success"];
-    data = json["data"];
-  }
-}

+ 3 - 3
lib/model/user_model.dart

@@ -1,4 +1,4 @@
-import 'package:flutter_tracker/model/message_model.dart';
+import 'package:flutter_tracker/model/base_model.dart';
 
 /// Description:
 /// Time       : 2021年12月03日 Friday
@@ -32,12 +32,12 @@ class UserModel {
 
 class UserEntity {
   late UserModel user;
-  late MessageModel msg;
+  late BaseModel msg;
 
   UserEntity(this.user, this.msg);
 
   UserEntity.fromJson(Map<String, dynamic> json) {
-    msg = MessageModel.fromJson(json);
+    msg = BaseModel.fromJson(json);
     if (msg.success) {
       user = UserModel.fromJson(json);
     }

+ 9 - 9
lib/pages/login/login_page.dart

@@ -32,9 +32,9 @@ class _LoginPageState extends State<LoginPage> {
   @override
   Widget build(BuildContext context) {
     return Scaffold(
-        appBar: AppBar(title: Text('登录')),
+        appBar: AppBar(title: const Text('登录')),
         body: Padding(
-          padding: EdgeInsets.symmetric(vertical: 16, horizontal: 24),
+          padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 24),
           child: Form(
             key: _formKey,
             child: Column(
@@ -42,7 +42,7 @@ class _LoginPageState extends State<LoginPage> {
                 TextFormField(
                   autofocus: true,
                   controller: _usernameController,
-                  decoration: InputDecoration(
+                  decoration: const InputDecoration(
                       labelText: '用户名',
                       hintText: '请输入用户名',
                       icon: Icon(Icons.person)),
@@ -74,19 +74,19 @@ class _LoginPageState extends State<LoginPage> {
                   },
                 ),
                 Padding(
-                  padding: EdgeInsets.only(top: 28),
+                  padding: const EdgeInsets.only(top: 28),
                   child: Row(
                     children: [
                       Expanded(
                         child: ElevatedButton(
                           style: ButtonStyle(
-                            padding:
-                                MaterialStateProperty.all(EdgeInsets.all(15)),
+                            padding: MaterialStateProperty.all(
+                                const EdgeInsets.all(15)),
                             iconColor: MaterialStateProperty.all(Colors.green),
                             foregroundColor:
                                 MaterialStateProperty.all(Colors.white),
                           ),
-                          child: Text('登录'),
+                          child: const Text('登录'),
                           onPressed: () {
                             login();
                           },
@@ -119,13 +119,13 @@ class _LoginPageState extends State<LoginPage> {
         _password != null) {
       _formKey.currentState!.save();
       LoginEntity loginEntity = await LoginDao.login(_username!, _password!);
-      if (loginEntity.msgModel.success) {
+      if (loginEntity.success) {
         prefs.setString('username', _username!);
         prefs.setString('password', _password!);
         prefs.setBool('isLogin', true);
         Navigator.of(context).pushNamed(Routes.indexPage);
       }
-      AppUtil.buildToast(loginEntity.msgModel.msg);
+      AppUtil.buildToast(loginEntity.msg);
     }
   }
 }

+ 5 - 5
lib/pages/login/register_page.dart

@@ -1,6 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_tracker/dio/login_dao.dart';
-import 'package:flutter_tracker/model/message_model.dart';
+import 'package:flutter_tracker/model/base_model.dart';
 import 'package:flutter_tracker/routes/routes.dart';
 import 'package:flutter_tracker/utils/app_util.dart';
 
@@ -28,7 +28,7 @@ class _RegisterPageState extends State<RegisterPage> {
   Widget build(BuildContext context) {
     return Scaffold(
       appBar: AppBar(
-        title: Text("注册账号"),
+        title: const Text("注册账号"),
       ),
       body: Padding(
         padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0),
@@ -84,10 +84,10 @@ class _RegisterPageState extends State<RegisterPage> {
                   children: <Widget>[
                     Expanded(
                       child: ElevatedButton(
-                        child: Text("注册"),
+                        child: const Text("注册"),
                         style: ButtonStyle(
                           padding: MaterialStateProperty.all(
-                            EdgeInsets.all(15.0),
+                            const EdgeInsets.all(15.0),
                           ),
                           iconColor: MaterialStateProperty.all(
                               Theme.of(context).primaryColor),
@@ -111,7 +111,7 @@ class _RegisterPageState extends State<RegisterPage> {
 
   //注册
   void register() async {
-    MessageModel messageModel = await LoginDao.register(_userName, _pwd);
+    BaseModel messageModel = await LoginDao.register(_userName, _pwd);
     if (messageModel != null) {
       if (messageModel.success) {
         Navigator.of(context).pushNamed(Routes.loginPage);

+ 4 - 4
lib/pages/submit_page.dart

@@ -101,7 +101,7 @@ class _SubmitPageState extends State<SubmitPage> {
                 groupValue: _heathStatus,
                 onChanged: (value) {
                   setState(() {
-                    _heathStatus = value;
+                    _heathStatus = value!;
                   });
                 },
               ),
@@ -111,7 +111,7 @@ class _SubmitPageState extends State<SubmitPage> {
                 groupValue: _heathStatus,
                 onChanged: (value) {
                   setState(() {
-                    _heathStatus = value;
+                    _heathStatus = value!;
                   });
                 },
               ),
@@ -219,9 +219,9 @@ class _SubmitPageState extends State<SubmitPage> {
       SharedPreferences prefs = await SharedPreferences.getInstance();
       var token = prefs.getString("token") ?? "";
       SubmitModel fileEntity = await TrackDao.uploadImg(
-          token, result.files.single.path!, result!.files.single.name);
+          token, result.files.single.path!, result.files.single.name);
       AppUtil.buildToast("fileEntity.msgModel.msg");
-      prefs.setString("fileName", result!.files.single.name);
+      prefs.setString("fileName", result.files.single.name);
       prefs.setInt("fileid", 11);
     } else {
       print('用户停止了选择文件');

+ 22 - 21
lib/pages/tabs/home_page.dart

@@ -18,30 +18,31 @@ class _HomePageState extends State<HomePage> {
 
   @override
   Widget build(BuildContext context) {
-    return Stack(
-      children: <Widget>[
-        Webview(
-          initialUrl: widget.url,
-          javascriptMode: JavascriptMode.unrestricted,
-          onWebViewCreated: (WebViewController web) {
-            web.canGoBack().then((res) {
-//                print(res); // 是否能返回上一级
-            });
-            web.currentUrl().then((url) {
-//                print(url); // 返回当前url
-            });
-            web.canGoForward().then((res) {
-//                print(res); //是否能前进
-            });
+    var controller = WebViewController()
+      ..setJavaScriptMode(JavaScriptMode.unrestricted)
+      ..setBackgroundColor(const Color(0x00000000))
+      ..setNavigationDelegate(
+        NavigationDelegate(
+          onProgress: (int progress) {
+            // Update loading bar.
           },
-          onPageFinished: (String value) {
-            // 返回当前url
-//              print(value);
-            setState(() {
-              _isLoading = false;
-            });
+          onPageStarted: (String url) {},
+          onPageFinished: (String url) {},
+          onWebResourceError: (WebResourceError error) {},
+          onNavigationRequest: (NavigationRequest request) {
+            if (request.url.startsWith('https://www.youtube.com/')) {
+              return NavigationDecision.prevent;
+            }
+            return NavigationDecision.navigate;
           },
         ),
+      )
+      ..loadRequest(Uri.parse(widget.url));
+    return Stack(
+      children: <Widget>[
+        WebViewWidget(
+          controller: controller,
+        ),
         _loading()
       ],
     );

+ 10 - 10
lib/pages/tabs/mine_page.dart

@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_tracker/dio/login_dao.dart';
+import 'package:flutter_tracker/model/base_model.dart';
 import 'package:flutter_tracker/model/config.dart';
-import 'package:flutter_tracker/model/message_model.dart';
 import 'package:flutter_tracker/routes/routes.dart';
 import 'package:flutter_tracker/utils/app_util.dart';
 import 'package:shared_preferences/shared_preferences.dart';
@@ -18,13 +18,13 @@ class MinePage extends StatefulWidget {
 
 class _MinePageState extends State<MinePage> {
   Size get _size => MediaQuery.of(context).size;
-  String _name = "张三";
+  final String _name = "张三";
   int type = 1;
 
   @override
   Widget build(BuildContext context) {
     return Scaffold(
-      backgroundColor: Color(0xE6E4E4),
+      backgroundColor: const Color(0x00e6e4e4),
       body: SizedBox(
         width: _size.width,
         child: SingleChildScrollView(
@@ -52,7 +52,7 @@ class _MinePageState extends State<MinePage> {
 
                     Text(
                       _name,
-                      style: TextStyle(fontSize: 25),
+                      style: const TextStyle(fontSize: 25),
                     ),
                     const SizedBox(
                       height: 10,
@@ -67,7 +67,7 @@ class _MinePageState extends State<MinePage> {
               const SizedBox(
                 height: 10,
               ),
-              Text("健康状态:"),
+              const Text("健康状态:"),
               buildImgStatus(),
               const SizedBox(
                 height: 10,
@@ -136,7 +136,7 @@ class _MinePageState extends State<MinePage> {
               // ),
               Offstage(
                 offstage: false,
-                child: Container(
+                child: SizedBox(
                   width: 200,
                   child: InkWell(
                     onTap: () {
@@ -145,7 +145,7 @@ class _MinePageState extends State<MinePage> {
                     child: Container(
                       width: double.infinity,
                       height: 50,
-                      padding: EdgeInsets.only(right: 20, left: 20),
+                      padding: const EdgeInsets.only(right: 20, left: 20),
                       decoration: BoxDecoration(
                           gradient: const LinearGradient(colors: [
                             ThemeColor.subTextColor,
@@ -169,7 +169,7 @@ class _MinePageState extends State<MinePage> {
                   ),
                 ),
               ),
-              SizedBox(
+              const SizedBox(
                 height: 50,
               ),
               Container(
@@ -181,7 +181,7 @@ class _MinePageState extends State<MinePage> {
                   child: Container(
                     width: double.infinity,
                     height: 50,
-                    padding: EdgeInsets.only(right: 20, left: 20),
+                    padding: const EdgeInsets.only(right: 20, left: 20),
                     decoration: BoxDecoration(
                         gradient: const LinearGradient(colors: [
                           ThemeColor.loignColor,
@@ -255,7 +255,7 @@ class _MinePageState extends State<MinePage> {
     var sharedPreferences = await SharedPreferences.getInstance();
     String token = sharedPreferences.getString("token") ?? "";
     try {
-      MessageModel messageModel = await LoginDao.logout(token);
+      BaseModel messageModel = await LoginDao.logout(token);
       if (messageModel != null) {
         AppUtil.buildToast(messageModel.msg);
       }

+ 7 - 7
pubspec.lock

@@ -69,10 +69,10 @@ packages:
     dependency: "direct main"
     description:
       name: dio
-      sha256: a9d76e72985d7087eb7c5e7903224ae52b337131518d127c554b9405936752b8
+      sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "5.2.1+1"
+    version: "4.0.6"
   fake_async:
     dependency: transitive
     description:
@@ -162,7 +162,7 @@ packages:
     dependency: "direct dev"
     description:
       name: flutter_lints
-      sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493
+      sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.2"
@@ -220,10 +220,10 @@ packages:
     dependency: "direct main"
     description:
       name: image_picker
-      sha256: b6951e25b795d053a6ba03af5f710069c99349de9341af95155d52665cb4607c
+      sha256: "6296e98782726d37f59663f0727d0e978eee1ced1ffed45ccaba591786a7f7b3"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.8.9"
+    version: "1.0.1"
   image_picker_android:
     dependency: transitive
     description:
@@ -292,7 +292,7 @@ packages:
     dependency: transitive
     description:
       name: lints
-      sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c
+      sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.1"
@@ -566,5 +566,5 @@ packages:
     source: hosted
     version: "1.0.1"
 sdks:
-  dart: ">=2.19.0 <3.0.0"
+  dart: ">=2.19.2 <3.0.0"
   flutter: ">=3.3.0"