Quellcode durchsuchen

[feat]添加给android原生获取的getPrologueList,isLogin,isMember

云天逵 vor 8 Monaten
Ursprung
Commit
e713b24697

+ 18 - 11
lib/data/api/atmob_api.dart

@@ -32,6 +32,7 @@ import 'package:keyboard/data/api/response/item_list_response.dart';
 import 'package:keyboard/data/api/response/item_retention_response.dart';
 import 'package:keyboard/data/api/response/keyboard_character_list_response.dart';
 import 'package:keyboard/data/api/response/keyboard_list_response.dart';
+import 'package:keyboard/data/api/response/keyboard_prologue_list_response.dart';
 import 'package:keyboard/data/api/response/login_response.dart';
 import 'package:keyboard/data/api/response/new_user_get_character_response.dart';
 import 'package:keyboard/data/api/response/order_pay_response.dart';
@@ -137,13 +138,11 @@ abstract class AtmobApi {
     @Body() CharacterCustomPageRequest request,
   );
 
-
   // 删除定制人设
   @POST("/project/keyboard/v1/character/custom/delete")
   Future<BaseResponse> deleteCustomCharacter(
-      @Body() CharacterCustomDeleteRequest request,
-      );
-
+    @Body() CharacterCustomDeleteRequest request,
+  );
 
   // 获取键盘人设列表
   @POST("/project/keyboard/v1/character/list")
@@ -167,30 +166,38 @@ abstract class AtmobApi {
   @POST("/project/keyboard/v1/keyboard/update")
   Future<BaseResponse> keyboardUpdate(@Body() KeyboardUpdateRequest request);
 
+  // 获取开场白列表
+  @POST("/project/keyboard/v1/keyboard/prologue/list")
+  Future<BaseResponse<KeyboardPrologueListResponse>> getPrologueList(
+      @Body() AppBaseRequest request,
+      );
   //获取配置信息
   @POST("/project/keyboard/v1/confs")
   Future<BaseResponse<ConfigResponse>> confs(@Body() ConfigRequest request);
 
-
-//   商品列表
+  //   商品列表
   @POST("/project/keyboard/v1/item/list")
   Future<BaseResponse<ItemListResponse>> getGoodsList(
     @Body() AppBaseRequest request,
   );
 
-//下拉发起支付
+  //下拉发起支付
   @POST("/project/keyboard/v1/order/pay")
-  Future<BaseResponse<OrderPayResponse>> orderPay(@Body() OrderPayRequest request);
-
+  Future<BaseResponse<OrderPayResponse>> orderPay(
+    @Body() OrderPayRequest request,
+  );
 
   // 查询支付结果
   @POST("/project/keyboard/v1/order/status")
   Future<BaseResponse<OrderStatusResponse>> orderStatus(
-      @Body() OrderStatusRequest request);
+    @Body() OrderStatusRequest request,
+  );
 
   //获取挽留弹框商品
   @POST("/project/keyboard/v1/item/detainment")
   Future<BaseResponse<ItemRetentionResponse>> getItemRetention(
-      @Body() AppBaseRequest request);
+    @Body() AppBaseRequest request,
+  );
+
 
 }

+ 34 - 0
lib/data/api/atmob_api.g.dart

@@ -735,6 +735,40 @@ class _AtmobApi implements AtmobApi {
   }
 
   @override
+  Future<BaseResponse<KeyboardPrologueListResponse>> getPrologueList(
+    AppBaseRequest request,
+  ) async {
+    final _extra = <String, dynamic>{};
+    final queryParameters = <String, dynamic>{};
+    final _headers = <String, dynamic>{};
+    final _data = <String, dynamic>{};
+    _data.addAll(request.toJson());
+    final _options = _setStreamType<BaseResponse<KeyboardPrologueListResponse>>(
+      Options(method: 'POST', headers: _headers, extra: _extra)
+          .compose(
+            _dio.options,
+            '/project/keyboard/v1/keyboard/prologue/list',
+            queryParameters: queryParameters,
+            data: _data,
+          )
+          .copyWith(baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl)),
+    );
+    final _result = await _dio.fetch<Map<String, dynamic>>(_options);
+    late BaseResponse<KeyboardPrologueListResponse> _value;
+    try {
+      _value = BaseResponse<KeyboardPrologueListResponse>.fromJson(
+        _result.data!,
+        (json) =>
+            KeyboardPrologueListResponse.fromJson(json as Map<String, dynamic>),
+      );
+    } on Object catch (e, s) {
+      errorLogger?.logError(e, s, _options);
+      rethrow;
+    }
+    return _value;
+  }
+
+  @override
   Future<BaseResponse<ConfigResponse>> confs(ConfigRequest request) async {
     final _extra = <String, dynamic>{};
     final queryParameters = <String, dynamic>{};

+ 42 - 0
lib/data/api/response/keyboard_prologue_list_response.dart

@@ -0,0 +1,42 @@
+import 'package:json_annotation/json_annotation.dart';
+part 'keyboard_prologue_list_response.g.dart';
+@JsonSerializable()
+class KeyboardPrologueListResponse {
+  @JsonKey(name: "prologues")
+  List<Prologue>? prologues;
+
+  KeyboardPrologueListResponse({this.prologues});
+
+  factory KeyboardPrologueListResponse.fromJson(Map<String, dynamic> json) =>
+      _$KeyboardPrologueListResponseFromJson(json);
+
+  Map<String, dynamic> toJson() => _$KeyboardPrologueListResponseToJson(this);
+}
+
+@JsonSerializable()
+class Prologue {
+  @JsonKey(name: "title")
+  String? title;
+
+  @JsonKey(name: "topics")
+  List<Topic>? topics;
+
+  Prologue({this.title, this.topics});
+
+  factory Prologue.fromJson(Map<String, dynamic> json) =>
+      _$PrologueFromJson(json);
+
+  Map<String, dynamic> toJson() => _$PrologueToJson(this);
+}
+
+@JsonSerializable()
+class Topic {
+  @JsonKey(name: "name")
+  String? name;
+
+  Topic({this.name});
+
+  factory Topic.fromJson(Map<String, dynamic> json) => _$TopicFromJson(json);
+
+  Map<String, dynamic> toJson() => _$TopicToJson(this);
+}

+ 40 - 0
lib/data/api/response/keyboard_prologue_list_response.g.dart

@@ -0,0 +1,40 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'keyboard_prologue_list_response.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+KeyboardPrologueListResponse _$KeyboardPrologueListResponseFromJson(
+  Map<String, dynamic> json,
+) => KeyboardPrologueListResponse(
+  prologues:
+      (json['prologues'] as List<dynamic>?)
+          ?.map((e) => Prologue.fromJson(e as Map<String, dynamic>))
+          .toList(),
+);
+
+Map<String, dynamic> _$KeyboardPrologueListResponseToJson(
+  KeyboardPrologueListResponse instance,
+) => <String, dynamic>{'prologues': instance.prologues};
+
+Prologue _$PrologueFromJson(Map<String, dynamic> json) => Prologue(
+  title: json['title'] as String?,
+  topics:
+      (json['topics'] as List<dynamic>?)
+          ?.map((e) => Topic.fromJson(e as Map<String, dynamic>))
+          .toList(),
+);
+
+Map<String, dynamic> _$PrologueToJson(Prologue instance) => <String, dynamic>{
+  'title': instance.title,
+  'topics': instance.topics,
+};
+
+Topic _$TopicFromJson(Map<String, dynamic> json) =>
+    Topic(name: json['name'] as String?);
+
+Map<String, dynamic> _$TopicToJson(Topic instance) => <String, dynamic>{
+  'name': instance.name,
+};

+ 4 - 0
lib/data/repository/account_repository.dart

@@ -33,6 +33,7 @@ class AccountRepository {
   RxnString loginPhoneNum = RxnString();
   RxBool isLogin = RxBool(false);
   Rxn<MemberInfo> memberStatusInfo = Rxn<MemberInfo>();
+  RxBool isMember = RxBool(false);
 
   int? _lastRequestCodeTime;
   int _errorCodeTimes = 0;
@@ -49,6 +50,7 @@ class AccountRepository {
         return value?.isNotEmpty == true;
       }),
     );
+
     loginPhoneNum.value = KVUtil.getString(keyAccountLoginPhoneNum, null);
     refreshUserInfo();
   }
@@ -120,6 +122,7 @@ class AccountRepository {
         .then((response) {
           _userInfo.value = response;
           memberStatusInfo.value = response.memberInfo;
+          isMember.value = response.memberInfo?.isMember == true;
           return response;
         });
   }
@@ -160,6 +163,7 @@ class AccountRepository {
     KVUtil.putString(keyAccountLoginPhoneNum, null);
     KVUtil.putString(keyAccountLoginToken, null);
     memberStatusInfo.value = null;
+    isMember.value = false;
     loginPhoneNum.value = null;
   }
 

+ 1 - 1
lib/data/repository/characters_repository.dart

@@ -79,7 +79,7 @@ class CharactersRepository {
         .addCharacter(
           CharacterAddRequest(characterId: characterId, keyboardId: keyboardId),
         )
-        .then(HttpHandler.handle(true));
+        .then(HttpHandler.handle(false));
   }
 
   // 解锁人设

+ 12 - 1
lib/data/repository/keyboard_repository.dart

@@ -1,8 +1,11 @@
 import 'package:get/get.dart';
 import 'package:injectable/injectable.dart';
+import 'package:keyboard/base/app_base_request.dart';
 import 'package:keyboard/data/api/request/keyboard_character_update_request.dart';
 import 'package:keyboard/data/api/request/keyboard_list_request.dart';
-
+import 'package:keyboard/data/api/response/keyboard_prologue_list_response.dart';
+import 'package:keyboard/utils/atmob_log.dart';
+import 'dart:convert';
 import '../../di/get_it.dart';
 import '../../utils/http_handler.dart';
 import '../api/atmob_api.dart';
@@ -27,6 +30,7 @@ class KeyboardRepository {
   }
 
   Future refreshKeyboardList() async {
+
     return getKeyboardList().then((response) {
       _keyboardInfoList.value = response.keyboardInfos;
       print('$tag refreshKeyboardList: ${response.keyboardInfos.first.id}');
@@ -89,5 +93,12 @@ class KeyboardRepository {
         .then(HttpHandler.handle(true));
   }
 
+  // 获取开场白列表
+  Future<KeyboardPrologueListResponse> getPrologueList() {
+    return atmobApi
+        .getPrologueList(AppBaseRequest())
+        .then(HttpHandler.handle(true));
+  }
+
   static KeyboardRepository getInstance() => getIt.get<KeyboardRepository>();
 }

+ 13 - 11
lib/di/get_it.config.dart

@@ -118,6 +118,13 @@ extension GetItInjectableX on _i174.GetIt {
         gh<_i83.AccountRepository>(),
       ),
     );
+    gh.lazySingleton<_i79.KeyboardAndroidPlatform>(
+      () => _i79.KeyboardAndroidPlatform(
+        gh<_i274.KeyboardRepository>(),
+        gh<_i421.CharactersRepository>(),
+        gh<_i83.AccountRepository>(),
+      ),
+    );
     gh.factory<_i935.GoodsSurpriseController>(
       () => _i935.GoodsSurpriseController(gh<_i987.StoreRepository>()),
     );
@@ -127,6 +134,12 @@ extension GetItInjectableX on _i174.GetIt {
     gh.factory<_i922.KeyboardManageController>(
       () => _i922.KeyboardManageController(gh<_i274.KeyboardRepository>()),
     );
+    gh.factory<_i970.CharacterGroupContentController>(
+      () => _i970.CharacterGroupContentController(
+        gh<_i421.CharactersRepository>(),
+        gh<_i83.AccountRepository>(),
+      ),
+    );
     gh.factory<_i876.FeedbackController>(
       () => _i876.FeedbackController(gh<_i83.AccountRepository>()),
     );
@@ -147,12 +160,6 @@ extension GetItInjectableX on _i174.GetIt {
     gh.factory<_i15.CharacterCustomController>(
       () => _i15.CharacterCustomController(gh<_i50.ConfigRepository>()),
     );
-    gh.lazySingleton<_i79.KeyboardAndroidPlatform>(
-      () => _i79.KeyboardAndroidPlatform(
-        gh<_i274.KeyboardRepository>(),
-        gh<_i421.CharactersRepository>(),
-      ),
-    );
     gh.factory<_i888.CharacterController>(
       () => _i888.CharacterController(
         gh<_i421.CharactersRepository>(),
@@ -166,11 +173,6 @@ extension GetItInjectableX on _i174.GetIt {
         gh<_i50.ConfigRepository>(),
       ),
     );
-    gh.factory<_i970.CharacterGroupContentController>(
-      () => _i970.CharacterGroupContentController(
-        gh<_i421.CharactersRepository>(),
-      ),
-    );
     gh.factory<_i1059.CharacterCustomListController>(
       () => _i1059.CharacterCustomListController(
         gh<_i421.CharactersRepository>(),

+ 8 - 9
lib/dialog/content/character_tab_group_content_controller.dart

@@ -17,17 +17,19 @@ import '../../../utils/error_handler.dart';
 
 @injectable
 class CharacterTabGroupContentController extends BaseController {
-   final KeyboardInfo currentKeyboardInfo ;
+  final KeyboardInfo currentKeyboardInfo;
 
-   final CharacterGroupInfo currentCharacterGroupInfo;
+  final CharacterGroupInfo currentCharacterGroupInfo;
 
   final CharactersRepository charactersRepository;
 
   @factoryMethod
-  CharacterTabGroupContentController(this.charactersRepository,{
+  CharacterTabGroupContentController(
+    this.charactersRepository, {
     @factoryParam required this.currentCharacterGroupInfo,
     @factoryParam required this.currentKeyboardInfo,
   });
+
   RxList<CharacterInfo> characterList = <CharacterInfo>[].obs;
 
   RxInt currentListCount = 0.obs;
@@ -42,8 +44,6 @@ class CharacterTabGroupContentController extends BaseController {
       controlFinishLoad: true,
       controlFinishRefresh: true,
     );
-
-
   }
 
   @override
@@ -81,7 +81,6 @@ class CharacterTabGroupContentController extends BaseController {
       keyboardId: currentKeyboardInfo.id.toString(),
     );
     if (isRefresh) {
-
       characterList.value = response.characterInfos;
     } else {
       characterList.addAll(response.characterInfos);
@@ -127,10 +126,10 @@ class CharacterTabGroupContentController extends BaseController {
           if (error is ServerErrorException && error.code == 1005) {
             ToastUtil.show('请开通会员解锁权益~');
             StorePage.start();
-          }if (error is ServerErrorException && error.code == 1001) {
+          }
+          if (error is ServerErrorException && error.code == 1001) {
             ToastUtil.show('键盘人设已达上限,请取消其他人设再添加~');
-          } 
-          else {
+          } else {
             ErrorHandler.toastError(error);
           }
         });

+ 9 - 7
lib/module/character/character_controller.dart

@@ -47,8 +47,13 @@ class CharacterController extends BaseController
   void onInit() {
     super.onInit();
 
-    currentCharacterGroupInfo.value = characterGroupList.first;
-    currentKeyboardInfo.value = keyboardInfoList.first;
+    if (characterGroupList.isNotEmpty) {
+      currentCharacterGroupInfo.value = characterGroupList.first;
+    }
+    if (keyboardInfoList.isNotEmpty) {
+      currentKeyboardInfo.value = keyboardInfoList.first;
+    }
+
     _dataLoad();
   }
 
@@ -124,19 +129,16 @@ class CharacterController extends BaseController
     super.onClose();
   }
 
- void clickMyKeyboard() {
+  void clickMyKeyboard() {
     AtmobLog.d(tag, "clickMyKeyboard");
     KeyboardManagePage.start();
   }
 
-
- void  clickCustomCharacter() {
+  void clickCustomCharacter() {
     AtmobLog.d(tag, "clickCustomCharacter");
     CharacterCustomPage.start();
-
   }
 
-
   // 切换键盘
   void switchKeyboard(String? newValue) {
     currentKeyboardInfo.value = keyboardInfoList.firstWhere(

+ 26 - 8
lib/module/character/content/character_group_content_controller.dart

@@ -3,6 +3,7 @@ import 'package:flutter/cupertino.dart';
 import 'package:get/get.dart';
 import 'package:injectable/injectable.dart';
 import 'package:keyboard/base/base_controller.dart';
+import 'package:keyboard/data/repository/account_repository.dart';
 import 'package:keyboard/data/repository/characters_repository.dart';
 import 'package:keyboard/dialog/character_details_dialog.dart';
 import 'package:keyboard/module/character/character_controller.dart';
@@ -27,7 +28,14 @@ class CharacterGroupContentController extends BaseController {
       Get.find<CharacterController>().currentCharacterGroupInfo;
   final CharactersRepository charactersRepository;
 
-  CharacterGroupContentController(this.charactersRepository);
+  final AccountRepository accountRepository;
+
+  bool get isLogin => accountRepository.isLogin.value;
+
+  CharacterGroupContentController(
+    this.charactersRepository,
+    this.accountRepository,
+  );
 
   RxList<CharacterInfo> characterList = <CharacterInfo>[].obs;
   RxInt currentListCount = 0.obs;
@@ -102,6 +110,10 @@ class CharacterGroupContentController extends BaseController {
 
   void itemButtonClick(CharacterInfo characterInfo) {
     AtmobLog.d(tag, 'characterInfo ${characterInfo.toJson()} ');
+    if (isLogin == false) {
+      ToastUtil.show('请先登录~');
+      return;
+    }
     CharacterDetailsDialog.show(
       characterInfo: characterInfo,
       clickCallback: () {
@@ -130,10 +142,13 @@ class CharacterGroupContentController extends BaseController {
 
       ToastUtil.show('添加成功~');
     } catch (error) {
-      if (error is ServerErrorException && error.code == 1005) {
-        StorePage.start();
-
-        ErrorHandler.toastError(error);
+      if (error is ServerErrorException) {
+        if (error.code == 1005) {
+          StorePage.start();
+          ToastUtil.show(error.message);
+        } else {
+          ToastUtil.show(error.message);
+        }
       } else {
         ErrorHandler.toastError(error);
       }
@@ -156,9 +171,12 @@ class CharacterGroupContentController extends BaseController {
           ToastUtil.show('解锁成功~');
         })
         .catchError((error) {
-          if (error is ServerErrorException && error.code == 1005) {
-            ToastUtil.show('请开通会员解锁权益~');
-            StorePage.start();
+          if (error is ServerErrorException) {
+            if (error.code == 1005) {
+              ToastUtil.show('请开通会员解锁权益~');
+              StorePage.start();
+            }
+            ToastUtil.show(error.message);
           } else {
             ErrorHandler.toastError(error);
           }

+ 1 - 3
lib/module/character_custom/character_custom_page.dart

@@ -311,7 +311,7 @@ class CharacterCustomPage extends BasePage<CharacterCustomController> {
           ),
           Container(
             margin: EdgeInsets.only(top: 32.h, left: 21.w, right: 21.w),
-            height: 160.h,
+            height: 180.h,
             child: AutoScrollListView(
               itemCount: columnCount, // 列数
               scrollDirection: Axis.horizontal,
@@ -320,14 +320,12 @@ class CharacterCustomPage extends BasePage<CharacterCustomController> {
                 int startIndex = columnIndex * rowCount;
                 List<dynamic> columnItems =
                     items.skip(startIndex).take(rowCount).toList();
-
                 return Column(
                   mainAxisSize: MainAxisSize.min,
                   children:
                       columnItems.map((item) {
                         final emoji = item.emoji ?? "";
                         final name = item.name ?? "";
-
                         return Padding(
                           padding: EdgeInsets.symmetric(
                             vertical: 4.h,

+ 19 - 0
lib/module/store/store_controller.dart

@@ -68,6 +68,9 @@ class StoreController extends BaseController implements PaymentStatusCallback {
 
   UserInfoResponse? get userInfo => accountRepository.userInfo.value;
 
+  // 过滤不同支付的商品
+  final RxList<GoodsInfo> filteredGoodsList = <GoodsInfo>[].obs;
+
   final List<StoreBannerBean> bannerList = [
     StoreBannerBean(
       banner: Assets.images.iconStoreBanner1,
@@ -150,12 +153,27 @@ class StoreController extends BaseController implements PaymentStatusCallback {
       if (response.payInfoList?.isNotEmpty == true) {
         payWayList.addAll(response.payInfoList!);
         _selectedPayWay.value = payWayList.first;
+        updateFilteredGoodsList();
       }
     } catch (e) {
       AtmobLog.e(tag, e.toString());
     }
   }
 
+  void updateFilteredGoodsList() {
+    if (_selectedPayWay.value == null) {
+      return;
+    }
+    _selectedGoodsInfoItem.value = null;
+    int selectedPayWayId = _selectedPayWay.value!.id;
+    filteredGoodsList.assignAll(
+      goodsInfoList.where((goods) {
+        return goods.payOptionIds == null ||
+            goods.payOptionIds!.contains(selectedPayWayId);
+      }).toList(),
+    );
+  }
+
   void onGoodsItemClick(GoodsInfo goodsInfo) {
     _selectedGoodsInfoItem.value = goodsInfo;
     debugPrint("'item: ${goodsInfo.toJson()}");
@@ -168,6 +186,7 @@ class StoreController extends BaseController implements PaymentStatusCallback {
       );
       int nextIndex = (currentIndex + 1) % payWayList.length;
       _selectedPayWay.value = payWayList[nextIndex];
+      updateFilteredGoodsList(); // 切换支付方式后,更新商品列表
     }
   }
 

+ 1 - 1
lib/module/store/store_page.dart

@@ -203,7 +203,7 @@ class StorePage extends BasePage<StoreController> {
           Obx(() {
             return Column(
               children:
-              controller.goodsInfoList.map((item) {
+              controller.filteredGoodsList.map((item) {
                 return Obx(() {
                   return GestureDetector(
                     onTap: () => controller.onGoodsItemClick(item),

+ 5 - 1
lib/plugins/keyboard_android_platform.dart

@@ -1,6 +1,7 @@
 import 'package:flutter/services.dart';
 import 'package:flutter/widgets.dart';
 import 'package:injectable/injectable.dart';
+import 'package:keyboard/data/repository/account_repository.dart';
 import 'package:keyboard/data/repository/characters_repository.dart';
 import 'package:keyboard/data/repository/keyboard_repository.dart';
 import 'package:keyboard/utils/atmob_log.dart';
@@ -16,14 +17,17 @@ class KeyboardAndroidPlatform {
 
   final KeyboardRepository keyboardRepository;
   final CharactersRepository charactersRepository;
+  final AccountRepository accountRepository;
   final KeyboardAndroidService _keyboardAndroidService;
   final KeyboardMethodHandler _methodHandler;
 
-  KeyboardAndroidPlatform(this.keyboardRepository, this.charactersRepository)
+  KeyboardAndroidPlatform(this.keyboardRepository, this.charactersRepository,this.accountRepository)
     : _keyboardAndroidService = KeyboardAndroidService(),
       _methodHandler = KeyboardMethodHandler(
         keyboardRepository,
         charactersRepository,
+        accountRepository,
+
       ) {
     AtmobLog.d(_tag, '初始化 KeyboardAndroidPlatform');
     _init();

+ 30 - 5
lib/plugins/keyboard_method_handler.dart

@@ -1,5 +1,7 @@
 import 'dart:convert';
 import 'package:flutter/services.dart';
+import 'package:keyboard/data/bean/member_info.dart';
+import 'package:keyboard/data/repository/account_repository.dart';
 import 'package:keyboard/data/repository/characters_repository.dart';
 import 'package:keyboard/data/repository/keyboard_repository.dart';
 import '../utils/mmkv_util.dart';
@@ -7,21 +9,38 @@ import '../utils/mmkv_util.dart';
 class KeyboardMethodHandler {
   final KeyboardRepository keyboardRepository;
   final CharactersRepository charactersRepository;
+  final AccountRepository accountRepository;
 
+  // 用处存储选中的键盘id
   static const String keyboardSelect = 'keyboard_select';
 
-  KeyboardMethodHandler(this.keyboardRepository, this.charactersRepository);
+  bool get isLogin => accountRepository.isLogin.value;
+  bool get isMember => accountRepository.isMember.value;
+
+  KeyboardMethodHandler(
+    this.keyboardRepository,
+    this.charactersRepository,
+    this.accountRepository,
+  );
 
   Future<dynamic> handleMethodCall(MethodCall call) async {
     switch (call.method) {
       case 'getKeyboardList':
-        return await _handleGetKeyboardList(call);
+        return _handleGetKeyboardList(call);
       case 'selectedKeyboard':
         return _handleSelectedKeyboard(call);
       case 'getCharacterList':
-        return await _handleGetCharacterList(call);
+        return _handleGetCharacterList(call);
       case 'getCurrentKeyboardId':
-        return await _handleGetCurrentKeyboardId(call);
+        return _handleGetCurrentKeyboardId(call);
+      case 'getPrologueList':
+        return _handleGetPrologueList(call);
+      case 'isLogin':
+        return isLogin;
+      case 'isMember':
+        return isMember;
+
+
       default:
         throw MissingPluginException('Not implemented: ${call.method}');
     }
@@ -49,7 +68,7 @@ class KeyboardMethodHandler {
     return "{}";
   }
 
-  Future<String> _handleGetCurrentKeyboardId(MethodCall call)  async {
+  Future<String> _handleGetCurrentKeyboardId(MethodCall call) async {
     String? keyboardId = KVUtil.getString(keyboardSelect, null);
     if (keyboardId == null) {
       return "{}";
@@ -64,4 +83,10 @@ class KeyboardMethodHandler {
     );
     return jsonEncode(characterList.toJson());
   }
+
+  //   获取开场白列表
+  Future<String> _handleGetPrologueList(MethodCall call) async {
+    final prologueList = await keyboardRepository.getPrologueList();
+    return jsonEncode(prologueList.toJson());
+  }
 }