You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
67 lines
1.6 KiB
|
|
import 'dart:async';
|
|
|
|
import 'package:dating_touchme_app/network/network_service.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
import '../../model/discover/matchmaker_live_data.dart';
|
|
|
|
class SearchPageController extends GetxController {
|
|
SearchPageController({NetworkService? networkService})
|
|
: _networkService = networkService ?? Get.find<NetworkService>();
|
|
|
|
final NetworkService _networkService;
|
|
|
|
|
|
final FocusNode blankFocusNode = FocusNode();
|
|
final searchController = TextEditingController().obs;
|
|
final name = "".obs;
|
|
|
|
|
|
|
|
final matchmakerList = <Records>[].obs;
|
|
|
|
final search = false.obs;
|
|
|
|
Timer? _debounce;
|
|
|
|
void onTextChanged(String text) {
|
|
// 取消上一次的计时
|
|
_debounce?.cancel();
|
|
|
|
_debounce = Timer(const Duration(milliseconds: 500), () {
|
|
name.value = text;
|
|
searchData();
|
|
});
|
|
}
|
|
|
|
searchData() async {
|
|
if(name.value.trim() == "" || name.value.trim().isEmpty){
|
|
search.value = false;
|
|
return;
|
|
}
|
|
try{
|
|
final response = await _networkService.rtcApi.userPageLiveMatchmaker(
|
|
|
|
searchKey: name.value
|
|
);
|
|
if (response.data.isSuccess && response.data.data != null) {
|
|
final data = response.data.data?.records ?? [];
|
|
|
|
matchmakerList.value = data.toList();
|
|
search.value = true;
|
|
|
|
} else {
|
|
|
|
// 响应失败,抛出异常
|
|
throw Exception(response.data.message ?? '获取数据失败');
|
|
}
|
|
} catch(e) {
|
|
print('红娘搜索失败: $e');
|
|
SmartDialog.showToast('红娘搜索失败');
|
|
rethrow;
|
|
}
|
|
}
|
|
}
|