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.

204 lines
6.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import 'dart:async';
import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:project_telephony/ui/home/content_connect_page.dart';
import 'package:project_telephony/ui/home/content_refuse_page.dart';
import 'package:project_telephony/utils/headers.dart';
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
bool sms=false;
bool plone=false;
@override
class _HomePageState extends State<HomePage> with WidgetsBindingObserver{
@override
void initState() {
super.initState();
_listenForPermissionStatus();
setState(() {
});
}
Future<void> _listenForPermissionStatus() async {
sms=await Permission.sms.request().isGranted;
plone =await Permission.phone.request().isGranted;
setState(() {});
}
void didChangeAppLifecycleState(AppLifecycleState state){
super.didChangeAppLifecycleState(state);
switch (state){
case AppLifecycleState.inactive:
print("1");
break;
case AppLifecycleState.resumed:
print("2");
break;
case AppLifecycleState.paused:
print("3");
break;
case AppLifecycleState.detached:
print("4");
break;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
extendBodyBehindAppBar: true,
extendBody: true,
body: SafeArea(
child: Stack(
// fit: StackFit.expand,
children: [
Positioned(
top: 10.w,
child:
// Container(
// height: 722.w,
// width: 722.w,
// decoration: BoxDecoration(image: DecorationImage(image:AssetImage(Assets.images.homeBg.path),fit:BoxFit.fill)),
// child: _warning(),)
Image.asset(
Assets.images.homeBg.path,
height: 722.w,
width: 722.w,
),
),
Positioned(top: 48.w,child: _warning()),
Positioned(bottom: 64.w, child: _getBody()),
Align(child: SizedBox(width: double.infinity,height: 1600.w,),)
],
),
));
}
bool _getPermissions() {
if(sms && plone){
return true;
}else{
return false;
}
}
_warning() {
return Offstage(offstage: (sms && plone) ,child:
GestureDetector(
onTap: (){
// print();
openAppSettings();
},
child: Container(
margin: EdgeInsets.symmetric(horizontal: 64.w),
padding: EdgeInsets.symmetric(horizontal: 32.w,vertical: 20.w),
height: 88.w,
decoration: BoxDecoration(
borderRadius:BorderRadius.circular(8.w),
color: const Color(0xFFFFF2F2),
border: Border.all(width: 1.w,color: const Color(0xFFFFC8C8))
),
child: Row(children: [
Image(image: AssetImage(Assets.icons.horn.path),width: 48.w,height: 48.w
,),
16.wb,
Text("必须权限没有授予本APP无法正常使用",style: TextStyle(color: const Color(0xFFFF3F3F),fontSize:24.sp ),)
,32.wb,
Image(image: AssetImage(Assets.icons.right.path),width:28.w ,height: 28.w,fit:BoxFit.fill,)
],),
),),);
}
_getBody() {
return Container(
padding: EdgeInsets.symmetric(horizontal: 64.w),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"短信帮手",
style: TextStyle(
fontSize: 64.sp,
color: const Color(0xFF333333),
fontWeight: FontWeight.bold),
),
8.hb,
Text(
"希望能成为您的短信小助手",
style: TextStyle(fontSize: 32.sp, color: const Color(0xFF999999)),
),
50.hb,
_getContainer("接听后", "编辑接听后发送的短信内容", Assets.images.answer.path,
const Color(0xFF74BCFF), const Color(0xFF1890FF)),
30.hb,
_getContainer("拒接/未接后", "编辑拒接/未接后发送的短信内容", Assets.images.refused.path,
const Color(0xFF72E4C8), const Color(0xFF13CA9D))
],
),
);
}
_getContainer(String title, String text, String image, Color cl1, Color cl2) {
return GestureDetector(
onTap: () {
print(title);
if (title == "接听后") {
Get.to(() => const ContentConnectPage());
} else {
Get.to(() => const ContentRefusePage());
print("未接听");
}
},
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16.w),
gradient: LinearGradient(
begin: Alignment.centerLeft,
end: Alignment.centerRight,
colors: [cl1, cl2])),
width: 622.w,
height: 192.w,
child: Row(children: [
Container(
padding: EdgeInsets.only(top: 40.w,left: 50.w
),
child:
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(title,
style: TextStyle(
fontSize: 36.sp,
color: const Color(0xFFFFFFFF),
fontWeight: FontWeight.bold)),
16.hb,
Text(
text,
style: TextStyle(
fontSize: 27.sp,
color: const Color(0xFFFFFFFF).withOpacity(0.6)),
),
],
),),
const Spacer()
,Image.asset(
image,
width: 166.w,
height: 152.w,
fit: BoxFit.fill,
),],)));
}
}