Browse Source

Merge branch 'feature/copper-bedbug' of lyq/agora_chat_demo into master

天问 2 years ago
parent
commit
898ea868f0

+ 20 - 9
README.md

@@ -1,16 +1,27 @@
 # agora_chat_demo
 
-A new Flutter project.
+agora chat demo
 
-## Getting Started
+![](https://file.yoqi.me/Developer/Flutter/agora_chat_demo/20230603192131.jpg)
 
-This project is a starting point for a Flutter application.
+download apk:  https://fileshare.yoqi.me/Developer/Flutter/agora_chat_demo
 
-A few resources to get you started if this is your first Flutter project:
+## Develop
 
-- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+1、配置 appkey等参数
+
+```
+vim lib\models\config.dart
+
+  static const String appKey  注意是chat应用的appkey
+  static const String userId  需要console创建一个用户
+  static const String agoraToken  测试时后台临时生成一个,部署正式环境时需要自己实现token服务,比如实现用户的注册登录功能
+```
+
+
+2、构建
+
+```
+flutter build apk
+```
 
-For help getting started with Flutter development, view the
-[online documentation](https://docs.flutter.dev/), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.

+ 1 - 1
android/app/build.gradle

@@ -40,7 +40,7 @@ android {
         applicationId "io.github.jianboy.flutter.agora_chat_demo"
         // You can update the following values to match your application needs.
         // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
-        minSdkVersion flutter.minSdkVersion
+        minSdkVersion 21
         targetSdkVersion 33
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName

+ 0 - 6
lib/config.dart

@@ -1,6 +0,0 @@
-class Config {
-  static const String appKey = "10b0d942f5e54aceae0fd6b6e89a443a";
-  static const String userId = "10b0d942f5e54aceae0fd6b6e89a443a";
-  static const String agoraToken =
-      "007eJxTYOgxm6r5zfPY9/knxZJeTftuusch35B7e+z8pSLVha79cfcUGAwNkgxSLE2M0kxTTU0Sk1MTUw3SUsySzFItLBNNTIwTr/6vSGkIZGS4+befmZEBAkF8JoZkQwYGAHrTIPc=";
-}

+ 31 - 0
lib/dao/user_dao.dart

@@ -0,0 +1,31 @@
+import 'package:agora_chat_demo/models/api.dart';
+import 'package:agora_chat_demo/models/user_model.dart';
+import 'package:dio/dio.dart';
+
+class UserDao {
+  Future<UserModel> getUser() async {
+    var response = await Dio().get(Api.user);
+    if (response.statusCode == 200) {
+      return UserModel.fromJson(response.data);
+    } else {
+      throw Exception("Failed to get user");
+    }
+  }
+
+  Future<UserModel> register(
+    String username,
+    String password,
+    String nickname,
+  ) async {
+    var response = await Dio().post(Api.user, data: {
+      "username": username,
+      "password": password,
+      "nickname": nickname,
+    });
+    if (response.statusCode == 200) {
+      return UserModel.fromJson(response.data);
+    } else {
+      throw Exception("Failed to register user");
+    }
+  }
+}

+ 2 - 1
lib/main.dart

@@ -1,4 +1,4 @@
-import 'package:agora_chat_demo/home_page.dart';
+import 'package:agora_chat_demo/pages/home_page.dart';
 import 'package:flutter/material.dart';
 
 void main() {
@@ -13,6 +13,7 @@ class MyApp extends StatelessWidget {
   Widget build(BuildContext context) {
     return MaterialApp(
       title: 'Flutter Demo',
+      debugShowCheckedModeBanner: false,
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),

+ 4 - 0
lib/models/api.dart

@@ -0,0 +1,4 @@
+class Api {
+  static const host = "https://xx.com";
+  static const user = "{$host}/org/app/users";
+}

+ 5 - 0
lib/models/base_model.dart

@@ -0,0 +1,5 @@
+import 'package:flutter/material.dart';
+
+class BaseModel extends ChangeNotifier {
+  
+}

+ 7 - 0
lib/models/config.dart

@@ -0,0 +1,7 @@
+class Config {
+  // https://console.agora.io/project/uLnhysNlv/extension?id=Chat
+  static const String appKey = "61138750#1136787";
+  static const String userId = "123aaa";
+  static const String agoraToken =
+      "007eJxTYLhnva5Ylkdu3aryrwcmqD/TmyJ0L4PX/ayQRWhecL9hxl4FBkODJIMUSxOjNNNUU5PE5NTEVIO0FLMks1QLy0QTE+NEO/bqlIZARoZn028zMzKwMjACIYivwpBmlphoaWpooGtgmJqma2iYmqqbZG5hqmtkaW5kbmmWZppkaAwA+cwmFQ==";
+}

+ 32 - 0
lib/models/user_model.dart

@@ -0,0 +1,32 @@
+import 'package:agora_chat_demo/models/base_model.dart';
+
+class UserModel extends BaseModel {
+  String username;
+  String password;
+  String nickname;
+
+  UserModel(
+      {required this.username, required this.password, required this.nickname});
+
+  UserModel.fromJson(Map<String, dynamic> json)
+      : username = json['username'],
+        password = json['password'],
+        nickname = json['nickname'];
+}
+
+class UserEntity {
+  List<UserModel>? users;
+  int? errorCode;
+  String? errorMsg;
+  UserEntity({this.users, this.errorCode, this.errorMsg});
+  UserEntity.fromJson(Map<String, dynamic> json) {
+    if (json['users'] != null) {
+      users = <UserModel>[];
+      json['users'].forEach((v) {
+        users!.add(UserModel.fromJson(v));
+      });
+    }
+    errorCode = json['errorCode'];
+    errorMsg = json['errorMsg'];
+  }
+}

+ 3 - 1
lib/home_page.dart → lib/pages/home_page.dart

@@ -1,6 +1,6 @@
+import 'package:agora_chat_demo/models/config.dart';
 import 'package:flutter/material.dart';
 import 'package:agora_chat_sdk/agora_chat_sdk.dart';
-import 'package:agora_chat_demo/config.dart';
 
 class HomePage extends StatefulWidget {
   const HomePage({Key? key, required this.title}) : super(key: key);
@@ -41,6 +41,7 @@ class _HomePageState extends State<HomePage> {
           mainAxisSize: MainAxisSize.max,
           children: [
             const SizedBox(height: 10),
+            const Text("login appKey: ${Config.appKey}"),
             const Text("login userId: ${Config.userId}"),
             const Text("agoraToken: ${Config.agoraToken}"),
             const SizedBox(height: 10),
@@ -125,6 +126,7 @@ class _HomePageState extends State<HomePage> {
     );
   }
 
+  /// login
   void _signIn() async {
     try {
       await ChatClient.getInstance.loginWithAgoraToken(

+ 8 - 0
lib/utils/http_util.dart

@@ -0,0 +1,8 @@
+import 'package:dio/dio.dart';
+
+/// post
+Future post(String url,Map<String, dynamic> params) {
+  // add authorization header
+  
+  return Dio().post(url, data: params);
+}

+ 150 - 1
pubspec.lock

@@ -57,6 +57,14 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.5"
+  dio:
+    dependency: "direct main"
+    description:
+      name: dio
+      sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.0.6"
   fake_async:
     dependency: transitive
     description:
@@ -65,6 +73,22 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.3.1"
+  ffi:
+    dependency: transitive
+    description:
+      name: ffi
+      sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.2"
+  file:
+    dependency: transitive
+    description:
+      name: file
+      sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "6.1.4"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -83,6 +107,11 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
+  flutter_web_plugins:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.0"
   http:
     dependency: "direct main"
     description:
@@ -147,6 +176,110 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.8.3"
+  path_provider_linux:
+    dependency: transitive
+    description:
+      name: path_provider_linux
+      sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.11"
+  path_provider_platform_interface:
+    dependency: transitive
+    description:
+      name: path_provider_platform_interface
+      sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.6"
+  path_provider_windows:
+    dependency: transitive
+    description:
+      name: path_provider_windows
+      sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.6"
+  platform:
+    dependency: transitive
+    description:
+      name: platform
+      sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.1.0"
+  plugin_platform_interface:
+    dependency: transitive
+    description:
+      name: plugin_platform_interface
+      sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.4"
+  process:
+    dependency: transitive
+    description:
+      name: process
+      sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.2.4"
+  shared_preferences:
+    dependency: "direct main"
+    description:
+      name: shared_preferences
+      sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.1"
+  shared_preferences_android:
+    dependency: transitive
+    description:
+      name: shared_preferences_android
+      sha256: "6478c6bbbecfe9aced34c483171e90d7c078f5883558b30ec3163cf18402c749"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.4"
+  shared_preferences_foundation:
+    dependency: transitive
+    description:
+      name: shared_preferences_foundation
+      sha256: e014107bb79d6d3297196f4f2d0db54b5d1f85b8ea8ff63b8e8b391a02700feb
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.2"
+  shared_preferences_linux:
+    dependency: transitive
+    description:
+      name: shared_preferences_linux
+      sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
+  shared_preferences_platform_interface:
+    dependency: transitive
+    description:
+      name: shared_preferences_platform_interface
+      sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
+  shared_preferences_web:
+    dependency: transitive
+    description:
+      name: shared_preferences_web
+      sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.0"
+  shared_preferences_windows:
+    dependency: transitive
+    description:
+      name: shared_preferences_windows
+      sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -216,6 +349,22 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.4"
+  win32:
+    dependency: transitive
+    description:
+      name: win32
+      sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.1.4"
+  xdg_directories:
+    dependency: transitive
+    description:
+      name: xdg_directories
+      sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.0"
 sdks:
   dart: ">=3.0.0-0 <4.0.0"
-  flutter: ">=2.0.0"
+  flutter: ">=3.3.0"

+ 3 - 1
pubspec.yaml

@@ -11,7 +11,9 @@ dependencies:
   agora_chat_sdk: ^1.1.0+1
   # agora_rtc_engine: ^6.2.0
   http: ^0.13.4
-
+  dio: ^4.0.6
+  shared_preferences: ^2.1.1
+  
 dev_dependencies:
   flutter_test:
     sdk: flutter