| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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<MessageInfo> 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 '无法跳转拨号界面';
- }
- }
- }
|