import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:get/get_core/src/get_main.dart'; import 'package:get/get_rx/src/rx_types/rx_types.dart'; import 'package:injectable/injectable.dart'; import 'package:location/base/base_controller.dart'; import 'package:location/data/repositories/message_repository.dart'; import 'package:location/handler/error_handler.dart'; import 'package:url_launcher/url_launcher.dart'; import '../../data/bean/message_info.dart'; import '../../data/bean/request_friend_info.dart'; @injectable class NewsController extends BaseController { final RxDouble _opacity = 0.0.obs; double get opacity => _opacity.value; final ScrollController scrollController = ScrollController(); final double _scrollThreshold = 80; final MessageRepository messageRepository; RequestFriendInfo? get latestFriendRequest => messageRepository.latestFriendRequest.value; int get waitingNewsCount => messageRepository.waitingCount.value; RxList messageList = RxList(); NewsController(this.messageRepository); @override void onReady() { super.onReady(); scrollController.addListener(_handleScroll); requestMessageList(); } void _handleScroll() { final double offset = scrollController.offset; if (offset <= _scrollThreshold) { _opacity.value = 0.0; } else { double opacity = ((offset - _scrollThreshold) / 200).clamp(0.0, 1.0); _opacity.value = opacity; } } void back() { Get.back(); } void newsClick() {} void requestMessageList() { messageRepository.getMessageList().then((response) { messageList.clear(); if (response.list != null) { messageList.addAll(response.list!); } }).catchError((error) { ErrorHandler.toastError(error); }); } @override void onClose() { super.onClose(); scrollController.dispose(); } ///2:你的好友请求已经被接受 // 3:你的好友请求已经被拒绝 // 4:好友发来的求救 // 5:你的好友删除了你 void onMessageFunClick(MessageInfo info) { if (info.type == 4) { debugPrint('好友发来的求救'); //跳转到打电话界面 _launchDialer(info.senderPhone); } } void _launchDialer(String phoneNumber) async { final Uri uri = Uri.parse('tel:$phoneNumber'); if (await canLaunchUrl(uri)) { await launchUrl(uri); } else { throw '无法跳转拨号界面'; } } }