问题描述
我有一个应用程序,我使用 workmanger 插件,我也使用 provider 插件。
工作管理器使提供程序无法正常工作,我没有任何错误,也没有在 dubg 或终端上收到任何错误,只是它没有按预期工作,我的 streamProvider 在首先使用 firebase auth 登录后没有更新小部件时间,但是当我不在我的应用程序中使用工作管理器插件时,stereamProvider 工作正常。
所以我得出这个结论是使用 workmanger 和 streamProvider 使您的应用无法按预期运行。
当我使用 Workmanger 并实现 Streamprovider 时,这是我的 main.dart 文件
import 'package:Flutter/material.dart';
import 'package:mohammad/pages/tabs.dart';
import 'package:mohammad/provider/auth_provider.dart';
import 'package:mohammad/provider/word_provider.dart';
import 'package:provider/provider.dart';
import 'package:firebase_core/firebase_core.dart';
import './models/user.dart';
import 'package:workmanager/workmanager.dart';
import 'package:Flutter_local_notifications/Flutter_local_notifications.dart';
import 'dart:async';
import 'api/notification.dart';
void callbackdispatcher() {
Workmanager.executeTask((task,inputData) async {
await Firebase.initializeApp();
bool isNewWord = await notificationChecker();
if (!isNewWord) {
return Future.value(true);
}
FlutterlocalnotificationsPlugin flip =
new FlutterlocalnotificationsPlugin();
// app_icon needs to be a added as a drawable
// resource to the Android head project.
var android = new AndroidInitializationSettings('@mipmap/ic_launcher');
var IOS = new IOSInitializationSettings();
// initialise settings for both Android and iOS device.
var settings = new InitializationSettings(android: android,iOS: IOS);
flip.initialize(settings);
_showNotificationWithDefaultSound(flip);
//simpleTask will be emitted here.
return Future.value(true);
});
}
void justFortest()async{
await Firebase.initializeApp();
bool isNewWord = await notificationChecker();
if (!isNewWord) {
return;
}
FlutterlocalnotificationsPlugin flip =
new FlutterlocalnotificationsPlugin();
// app_icon needs to be a added as a drawable
// resource to the Android head project.
var android = new AndroidInitializationSettings('@mipmap/ic_launcher');
var IOS = new IOSInitializationSettings();
// initialise settings for both Android and iOS device.
var settings = new InitializationSettings(android: android,iOS: IOS);
flip.initialize(settings);
_showNotificationWithDefaultSound(flip);
//simpleTask will be emitted here.
}
Future _showNotificationWithDefaultSound(flip) async {
// Show a notification after every 15 minute with the first
// appearance happening a minute after invoking the method
var androidplatformChannelSpecifics = new AndroidNotificationDetails(
'your channel id','your channel name','your channel description',importance: Importance.max,priority: Priority.max,enableVibration: true,enableLights: true,largeIcon: DrawableResourceAndroidBitmap('ic_launcher_round'),);
var iOSPlatformChannelSpecifics = new IOSNotificationDetails();
// initialise channel platform for both Android and iOS device.
var platformChannelSpecifics = new NotificationDetails(
android: androidplatformChannelSpecifics,iOS: iOSPlatformChannelSpecifics);
await flip.show(0,'Muhammad Mahdi','وشەی نوێ',platformChannelSpecifics,payload: 'ic_launcher_round',);
}
void main() {
WidgetsFlutterBinding.ensureInitialized();
Workmanager.initialize(
callbackdispatcher,// The top level function,aka callbackdispatcher
// If enabled it will post a notification whenever the task is running. Handy for debugging tasks
);
Workmanager.registerPeriodicTask(
"1","simpleaa",tag:'hi',initialDelay: Duration(seconds: 5),inputData: {'data':'data'}
);
print('hı');
runApp(App());
}
class App extends StatefulWidget {
static const APP_VERSION = 1;
@override
State<StatefulWidget> createState() {
return AppState();
}
}
class AppState extends State<App> {
final Future _initialization = Firebase.initializeApp();
@override
void initState() {
super.initState();
// var timer = Timer(Duration(seconds: 30),()
// {
// justFortest();
// });
}
Widget build(BuildContext context) {
// debugPaintSizeEnabled = true;
return FutureBuilder(
future: _initialization,builder: (BuildContext context,AsyncSnapshot snap) {
if (snap.hasData) {
return MultiProvider(
providers: [
ChangeNotifierProvider<WordProvider>(
create: (_) => WordProvider()),ChangeNotifierProvider<AuthProvider>(
create: (_) => AuthProvider()),StreamProvider<usermodel>.value(
initialData: usermodel.fromJson({'uid': 'loading'}),value: AuthProvider().user)
],child: MaterialApp(
debugShowCheckedModeBanner: false,theme:ThemeData(accentColor:const Color(0xff63CEC8),fontFamily: 'bahij',primaryColor: const Color(0xff202833),primaryColorLight: const Color(0xff2E3948),),title: 'Mohammed Mehdi',home: Scaffold(
body: Tabs(),)),);
} else {
return Center(child: CircularProgressIndicator());
}
},);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)