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.
60 lines
1.5 KiB
60 lines
1.5 KiB
4 years ago
|
import 'dart:convert';
|
||
|
|
||
|
import 'package:flutter/cupertino.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:get/get.dart';
|
||
|
import 'package:velocity_x/velocity_x.dart';
|
||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||
|
|
||
|
class JpushMessageParse {
|
||
|
final Map<String, dynamic> message;
|
||
|
String subTitle;
|
||
|
String type = '0';
|
||
|
JpushMessageParse(Map<String, dynamic> rawMessage)
|
||
|
: message = Map<String, dynamic>.from(rawMessage);
|
||
|
|
||
|
Future shot() async {
|
||
|
subTitle = message['alert'];
|
||
|
Map<dynamic, dynamic> rawExtras = message['extras'];
|
||
|
String androidExtra = rawExtras['cn.jpush.android.EXTRA'];
|
||
|
if (androidExtra == null) {
|
||
|
return;
|
||
|
} else {
|
||
|
Map<String, dynamic> _innerMap = jsonDecode(androidExtra);
|
||
|
type = _innerMap['type'] ?? '0';
|
||
|
switch (type) {
|
||
|
case '1':
|
||
|
await fireAlert(subTitle);
|
||
|
break;
|
||
|
default:
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Future fireAlert(String subTitle) async {
|
||
|
await Get.dialog(
|
||
|
CupertinoAlertDialog(
|
||
|
title: Text('发现火灾!请立刻组织疏散人群!'),
|
||
|
content: Column(
|
||
|
children: [
|
||
|
Text(subTitle),
|
||
|
10.w.heightBox,
|
||
|
Icon(
|
||
|
CupertinoIcons.bell_fill,
|
||
|
color: Colors.red,
|
||
|
size: 48.w,
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
actions: [
|
||
|
CupertinoDialogAction(
|
||
|
child: Text('确认'),
|
||
|
onPressed: () => Get.back(),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
barrierDismissible: false,
|
||
|
);
|
||
|
}
|
||
|
}
|