Flutter 当它';这是UI和x27之间的转换;s
我正在制作一个ui,我想在页面从主页面更改为主页时得到一个推送通知。我使用了flatter\u local\u通知包:^1.4.4+2,我使用此代码接收通知,但我没有在任何地方调用它,因为我在主界面中没有按钮(这只是一个过渡),所以我如何调用它Flutter 当它';这是UI和x27之间的转换;s,flutter,Flutter,我正在制作一个ui,我想在页面从主页面更改为主页时得到一个推送通知。我使用了flatter\u local\u通知包:^1.4.4+2,我使用此代码接收通知,但我没有在任何地方调用它,因为我在主界面中没有按钮(这只是一个过渡),所以我如何调用它 import 'package:flutter/material.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; class P
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class PushNotification extends StatefulWidget {
@override
_PushNotificationState createState() => _PushNotificationState();
}
class _PushNotificationState extends State {
FlutterLocalNotificationsPlugin fltrNotification;
String _selectedParam;
String task;
int val;
@override
void initState() {
super.initState();
var androidInitilize = new AndroidInitializationSettings('app_icon');
var iOSinitilize = new IOSInitializationSettings();
var initilizationsSettings =
new InitializationSettings(androidInitilize, iOSinitilize);
fltrNotification = new FlutterLocalNotificationsPlugin();
fltrNotification.initialize(initilizationsSettings,
onSelectNotification: notificationSelected);
}
Future _showNotification() async {
var androidDetails = new AndroidNotificationDetails(
"Channel ID", "Desi programmer", "This is my channel",
importance: Importance.Max);
var iSODetails = new IOSNotificationDetails();
var generalNotificationDetails =
new NotificationDetails(androidDetails, iSODetails);
// await fltrNotification.show(
// 0, "Task", "You created a Task", generalNotificationDetails, payload: "Task");
var scheduledTime;
if (_selectedParam == "Hour") {
scheduledTime = DateTime.now().add(Duration(hours: 12));
} else if (_selectedParam == "Minute") {
scheduledTime = DateTime.now().add(Duration(minutes: 14));
} else {
scheduledTime = DateTime.now().add(Duration(seconds: val));
}
fltrNotification.schedule(
1, "Times Uppp", task, scheduledTime, generalNotificationDetails);
}
@override
Widget build(BuildContext context) {}
Future notificationSelected(String payload) async {
showDialog(
context: context,
builder: (context) => AlertDialog(
content: Text("Notification Clicked $payload"),
),
);
}
}
这是给main.dart的
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:tariffo/auth.dart';
import 'package:tariffo/provider_widget.dart';
import 'package:tariffo/push_notification_service.dart';
import 'dart:async';
import 'LoginScreen.dart';
import 'LoginPage.dart';
import 'HomePage.dart';
import 'LoginScreen.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
String email;
SharedPreferences sharedPrefs;
initState() {
super.initState();
FirebaseAuth.instance.currentUser().then((value) {
if (value == null) {
new Future.delayed(
const Duration(seconds: 1),
() => Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginScreen()),
));
} else {
new Future.delayed(
const Duration(seconds: 1),
() => Navigator.push(
context,
MaterialPageRoute(builder: (context) => Homepage()),
));
}
});
// _getPrefs().then((value) {
// print('in getPrefs');
// if (value == '') {
// print('value is empty');
// new Future.delayed(
// const Duration(seconds: 1),
// () => Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginScreen()),
// ));
// } else {
// print('value is not empty');
// new Future.delayed(
// const Duration(seconds: 1),
// () => Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => Homepage()),
// ));
// }
// });
}
Future<String> _getPrefs() async {
sharedPrefs = await SharedPreferences.getInstance();
email = sharedPrefs.getString('email') ?? '';
return email;
}
Future<void> _rmPrefs() async {
sharedPrefs = await SharedPreferences.getInstance();
sharedPrefs.remove('masterAuth');
}
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
return Provider(
auth: Authentication(),
db: Firestore.instance,
child: MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
backgroundColor: Colors.blue,
body: Center(
child: Text(
"Tariffo",
style: TextStyle(
color: Colors.white,
fontFamily: 'SignPainter',
fontSize: 60),
),
)),
));
}
}
import'包:cloud_firestore/cloud_firestore.dart';
导入“包:firebase_auth/firebase_auth.dart”;
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“包:tariffo/auth.dart”;
导入“package:tariffo/provider_widget.dart”;
导入“package:tariffo/push_notification_service.dart”;
导入“dart:async”;
导入“LoginScreen.dart”;
导入“LoginPage.dart”;
导入“HomePage.dart”;
导入“LoginScreen.dart”;
导入“package:shared_preferences/shared_preferences.dart”;
void main()异步{
runApp(新材料)PP(
主页:新建MyApp(),
));
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>new_MyAppState();
}
类MyAppState扩展了状态{
字符串电子邮件;
SharedReferences SharedRefers;
initState(){
super.initState();
FirebaseAuth.instance.currentUser().then((值){
如果(值==null){
新未来(
常数持续时间(秒:1),
()=>Navigator.push(
上下文
MaterialPage路由(生成器:(上下文)=>LoginScreen()),
));
}否则{
新未来(
常数持续时间(秒:1),
()=>Navigator.push(
上下文
MaterialPackageRoute(生成器:(上下文)=>Homepage()),
));
}
});
//_getPrefs()。然后((值){
//打印('in getPrefs');
//如果(值=“”){
//打印('值为空');
//新未来(
//常数持续时间(秒:1),
//()=>Navigator.push(
//背景,
//MaterialPage路由(生成器:(上下文)=>LoginScreen()),
// ));
//}其他{
//打印('值不为空');
//新未来(
//常数持续时间(秒:1),
//()=>Navigator.push(
//背景,
//MaterialPackageRoute(生成器:(上下文)=>Homepage()),
// ));
// }
// });
}
Future\u getPrefs()异步{
sharedPrefs=等待SharedPreferences.getInstance();
email=sharedPrefs.getString('email')??“”;
回复邮件;
}
Future _rmPrefs()异步{
sharedPrefs=等待SharedPreferences.getInstance();
sharedPrefs.remove('masterAuth');
}
@凌驾
小部件构建(构建上下文){
SystemChrome.setPreferredOrientations([DeviceOrientation.GraphicUp]);
返回提供者(
auth:Authentication(),
db:Firestore.instance,
孩子:MaterialApp(
标题:“欢迎来到弗利特”,
家:脚手架(
背景颜色:Colors.blue,
正文:中(
子:文本(
“塔里夫”,
样式:TextStyle(
颜色:颜色,白色,
fontFamily:“签名画家”,
尺寸:60),,
),
)),
));
}
}