Pushing till working demo

dev_faiz
Faiz Hashmi 3 years ago
parent 54f6c7c185
commit c73daeb8e8

@ -45,7 +45,7 @@ android {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.queuing_system" applicationId "com.example.queuing_system"
minSdkVersion localProperties.getProperty('flutter.minSdkVersion').toInteger() minSdkVersion localProperties.getProperty('flutter.minSdkVersion').toInteger()
targetSdkVersion flutter.targetSdkVersion targetSdkVersion localProperties.getProperty('flutter.targetSdkVersion').toInteger()
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -13,13 +13,19 @@ class API {
onSuccess: (response, status) { onSuccess: (response, status) {
if (status == 200) { if (status == 200) {
var calledByNurse = (response["CalledByNurse"] as List).map((j) => Tickets.fromJson(j)).toList(); var calledByNurse = (response["CalledByNurse"] as List).map((j) => Tickets.fromJson(j)).toList();
print("calledByNurse Length: ${calledByNurse.length}");
final patients = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList(); final patients = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList();
print("patients Length: ${patients.length}");
calledByNurse.addAll(patients); calledByNurse.addAll(patients);
calledByNurse.sort((a, b) => a.callNo.compareTo(b.callNo));
// calledByNurse.sort((a, b) => a.callNo.compareTo(b.callNo));
// final clinicCurrentPatient = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList(); // final clinicCurrentPatient = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList();
onSuccess(calledByNurse); onSuccess(calledByNurse.reversed.toList());
} else { } else {
onFailure(response); onFailure(response);
} }
@ -27,26 +33,25 @@ class API {
onFailure: (error, status) => onFailure(error)); onFailure: (error, status) => onFailure(error));
} }
static Call_UpdateNotIsQueueRecordByIDAsync(String deviceIp, {@required List<Tickets> tickets, @required Function(List<Tickets>) onSuccess, @required Function(dynamic) onFailure}) async { static Call_UpdateNotIsQueueRecordByIDAsync(String deviceIp, {@required Tickets ticket, @required Function(List<Tickets>) onSuccess, @required Function(dynamic) onFailure}) async {
if (tickets.isEmpty) { if (ticket.id == null) {
return; return;
} }
List<Tickets> _ticketsUpdated = []; List<Tickets> _ticketsUpdated = [];
for (var ticket in tickets) { // for (var ticket in tickets) {
final body = {"CallID": ticket.callNo}; final body = {"CallID": ticket.id};
await BaseAppClient.post(_call_UpdateNotIsQueueRecordByIDAsync, await BaseAppClient.post(_call_UpdateNotIsQueueRecordByIDAsync,
body: body, body: body,
onSuccess: (response, status) { onSuccess: (response, status) {
print("response: $response");
if (status == 200) { if (status == 200) {
ticket.call_updated = true; ticket.call_updated = true;
_ticketsUpdated.add(ticket); _ticketsUpdated.add(ticket);
} }
}, },
onFailure: (error, status) => onFailure(error)); onFailure: (error, status) => onFailure(error));
} // }
if (_ticketsUpdated.isNotEmpty) { if (_ticketsUpdated.isNotEmpty) {
onSuccess(_ticketsUpdated); onSuccess(_ticketsUpdated);

@ -1,4 +1,3 @@
import 'package:queuing_system/utils/call_type.dart'; import 'package:queuing_system/utils/call_type.dart';
class Tickets { class Tickets {
@ -13,10 +12,20 @@ class Tickets {
this.mobileNo, this.mobileNo,
this.patientGender, this.patientGender,
this.patientID, this.patientID,
this.callNoStr,
this.queueNo, this.queueNo,
}); });
String getParsedDateTime(String date) {
print("gotDate: $date");
DateTime dateTime = DateTime.parse(date);
}
Tickets.fromJson(dynamic json) { Tickets.fromJson(dynamic json) {
print("here json: $json");
id = json['ID'];
callNo = json['CallNo']; callNo = json['CallNo'];
roomNo = json['RoomNo']; roomNo = json['RoomNo'];
callType = json['callType']; callType = json['callType'];
@ -28,8 +37,10 @@ class Tickets {
patientGender = json['PatientGender']; patientGender = json['PatientGender'];
patientID = json['PatientID']; patientID = json['PatientID'];
queueNo = json['QueueNo']; queueNo = json['QueueNo'];
callNoStr = json['CallNoStr'] ?? json['CallNo'].toString();
} }
int id;
int callNo; int callNo;
String roomNo; String roomNo;
int callType; int callType;
@ -41,10 +52,12 @@ class Tickets {
int patientGender; int patientGender;
int patientID; int patientID;
String queueNo; String queueNo;
String callNoStr;
bool call_updated = false; bool call_updated = false;
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['ID'] = id;
map['CallNo'] = callNo; map['CallNo'] = callNo;
map['RoomNo'] = roomNo; map['RoomNo'] = roomNo;
map['callType'] = callType; map['callType'] = callType;
@ -55,6 +68,7 @@ class Tickets {
map['MobileNo'] = mobileNo; map['MobileNo'] = mobileNo;
map['PatientGender'] = patientGender; map['PatientGender'] = patientGender;
map['PatientID'] = patientID; map['PatientID'] = patientID;
map['CallNoStr'] = callNoStr;
map['QueueNo'] = queueNo; map['QueueNo'] = queueNo;
return map; return map;
} }

@ -14,8 +14,9 @@ import 'package:queuing_system/utils/call_type.dart';
import 'package:queuing_system/utils/signalR_utils.dart'; import 'package:queuing_system/utils/signalR_utils.dart';
import 'package:queuing_system/utils/utils.dart'; import 'package:queuing_system/utils/utils.dart';
import 'package:queuing_system/widget/data_display/app_texts_widget.dart'; import 'package:queuing_system/widget/data_display/app_texts_widget.dart';
import 'package:text_to_speech/text_to_speech.dart';
var DEVICE_IP = "10.10.14.11"; // Testing IP var DEVICE_IP = "10.10.15.11"; // Testing IP
// var DEVICE_IP = "10.10.14.11"; // Testing IP // var DEVICE_IP = "10.10.14.11"; // Testing IP
// var DEVICE_IP = "10.10.15.11"; // var DEVICE_IP = "10.10.15.11";
@ -44,6 +45,7 @@ class _MyHomePageState extends State<MyHomePage> {
@override @override
void initState() { void initState() {
listenNetworkConnectivity(); listenNetworkConnectivity();
if (!signalRHelper.getConnectionState()) { if (!signalRHelper.getConnectionState()) {
signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect); signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect);
} }
@ -53,6 +55,7 @@ class _MyHomePageState extends State<MyHomePage> {
TextEditingController controller = TextEditingController(); TextEditingController controller = TextEditingController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
@ -150,13 +153,20 @@ class _MyHomePageState extends State<MyHomePage> {
voiceCall() async { voiceCall() async {
if (waitings.isNotEmpty && voiceCaller == null) { if (waitings.isNotEmpty && voiceCaller == null) {
final postVoice = waitings.first.getCallType().audio('en'); final postVoice = waitings.first.getCallType().audio('en');
voiceCaller = CallByVoice(waitings.first.callNo.toString(), preVoice: 'ticket_number.mp3', postVoice: postVoice, lang: 'en'); voiceCaller = CallByVoice(waitings.first.callNoStr.toString(), preVoice: 'ticket_number.mp3', postVoice: postVoice, lang: 'en');
await voiceCaller.start(); await voiceCaller.start();
voiceCaller = null; voiceCaller = null;
} }
} }
printWaiting() {
for (var value in waitings) {
print("waiting: ${value.callNoStr}");
}
}
onUpdateAvailable(data) async { onUpdateAvailable(data) async {
waitings.clear();
API.GetCallRequestInfoByClinincInfo(DEVICE_IP, onSuccess: (waitingCalls) { API.GetCallRequestInfoByClinincInfo(DEVICE_IP, onSuccess: (waitingCalls) {
setState(() { setState(() {
waitings = waitingCalls; waitings = waitingCalls;
@ -166,7 +176,8 @@ class _MyHomePageState extends State<MyHomePage> {
log("\n\n"); log("\n\n");
log("--------------------"); log("--------------------");
// log("Current: $currentInClinic"); // log("Current: $currentInClinic");
log("Waiting: $waitingCalls"); // log("Waiting: $waitingCalls");
printWaiting();
log("--------------------"); log("--------------------");
log("\n\n"); log("\n\n");
@ -175,12 +186,12 @@ class _MyHomePageState extends State<MyHomePage> {
} }
updateTickets() { updateTickets() {
List<Tickets> _ticketsToUpdate = waitings.where((t) => t.call_updated == false).toList(); // List<Tickets> _ticketsToUpdate = waitings.where((t) => t.call_updated == false).toList();
API.Call_UpdateNotIsQueueRecordByIDAsync(DEVICE_IP, tickets: _ticketsToUpdate, onSuccess: (tickets_updated) { // API.Call_UpdateNotIsQueueRecordByIDAsync(DEVICE_IP, ticket: _ticketsToUpdate.first, onSuccess: (tickets_updated) {
print("[${tickets_updated.length}] Tickets Updated: $tickets_updated"); // print("[${tickets_updated.length}] Tickets Updated: $tickets_updated");
}, onFailure: (e) { // }, onFailure: (e) {
print("API UPDate Tickets Failed with : ${e.toString()}"); // print("API UPDate Tickets Failed with : ${e.toString()}");
}); // });
} }
onConnect() { onConnect() {
@ -189,7 +200,7 @@ class _MyHomePageState extends State<MyHomePage> {
onDisconnect(exception) { onDisconnect(exception) {
log("SignalR: onDisconnect"); log("SignalR: onDisconnect");
signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect); // signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect);
} }
onConnecting() { onConnecting() {

@ -1,74 +1,84 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:queuing_system/core/config/config.dart';
import 'package:queuing_system/core/config/size_config.dart'; import 'package:queuing_system/core/config/size_config.dart';
import 'package:queuing_system/core/response_model/patient_call.dart'; import 'package:queuing_system/core/response_model/patient_call.dart';
import 'package:queuing_system/home/priority_calls.dart'; import 'package:queuing_system/home/priority_calls.dart';
import 'package:queuing_system/utils/call_type.dart'; import 'package:queuing_system/utils/call_type.dart';
import 'package:queuing_system/widget/data_display/app_texts_widget.dart'; import 'package:queuing_system/widget/data_display/app_texts_widget.dart';
Widget noPatientInQueue(){ Widget noPatientInQueue() {
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Center( Center(
child: AppText("Awaiting Patients Arrival", child: AppText("Awaiting Patients Arrival", fontFamily: 'Poppins-SemiBold.ttf', fontSize: SizeConfig.getWidthMultiplier() * 9),
fontFamily: 'Poppins-SemiBold.ttf',
fontSize: SizeConfig.getWidthMultiplier() * 9),
), ),
], ],
); );
} }
Widget priorityTickets(List<Tickets> tickets){ Widget priorityTickets(List<Tickets> tickets) {
return PriorityTickets(tickets); return PriorityTickets(tickets);
} }
Widget priorityTicketsWithSideList(List<Tickets> tickets) {
final priorityTickets = tickets.sublist(0, 3);
Widget priorityTicketsWithSideList(List<Tickets> tickets){ final otherTickets = tickets.sublist(3, tickets.length);
final priorityTickets = tickets.sublist(0,3);
final otherTickets = tickets.sublist(3,tickets.length);
return Row( return Row(
children: [ children: [
Expanded( Expanded(flex: 2, child: PriorityTickets(priorityTickets)),
flex: 3, Container(color: Colors.grey.withOpacity(0.1), width: 10, margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 50)),
child: PriorityTickets(priorityTickets)
),
Container(color: Colors.grey.withOpacity(0.1), width: 10, margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 50)),
Expanded( Expanded(
flex: 2, flex: 2,
child: ListView.builder( child: ListView.builder(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 50), padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 50),
itemCount: otherTickets.length, itemCount: otherTickets.length,
itemBuilder: (ctx,idx){ itemBuilder: (ctx, idx) {
final itm = otherTickets[idx]; final itm = otherTickets[idx];
return ListTile( return Padding(
contentPadding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
title: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
SizedBox( SizedBox(
width: 140, width: SizeConfig.getWidthMultiplier() * 13,
child: AppText( child: AppText(
itm.callNo.toString(), itm.callNoStr.toString(),
letterSpacing: -2.32, letterSpacing: -2.32,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: SizeConfig.getWidthMultiplier() * 5, fontSize: SizeConfig.getWidthMultiplier() * 4.5,
textAlign: TextAlign.end, textAlign: TextAlign.end,
), ),
), ),
const SizedBox(width: 10),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
itm.getCallType().icon(SizeConfig.getHeightMultiplier()*2.5), SizedBox(
width: SizeConfig.getWidthMultiplier() * 3.3,
child: itm.getCallType().icon(SizeConfig.getHeightMultiplier() * 2.5),
),
const SizedBox(width: 10), const SizedBox(width: 10),
SizedBox(
width: SizeConfig.getWidthMultiplier() * 29,
child: AppText(
itm.getCallType().message('en'),
color: itm.getCallType().color(),
letterSpacing: -1.5,
fontSize: SizeConfig.getWidthMultiplier() * 3.3,
fontWeight: FontWeight.w600,
fontHeight: 0.5,
),
),
Container(
color: Colors.grey.withOpacity(0.3),
width: 6,
height: SizeConfig.getHeightMultiplier() * 3,
margin: const EdgeInsets.symmetric(horizontal: 10),
),
AppText( AppText(
itm.getCallType().message('en'), "Room: ${itm.roomNo}",
color: itm.getCallType().color(), color: itm.getCallType().color(),
letterSpacing: -1.5, letterSpacing: -1.5,
fontSize: SizeConfig.getWidthMultiplier() * 3.3, fontSize: SizeConfig.getWidthMultiplier() * 3.3,
@ -85,4 +95,4 @@ Widget priorityTicketsWithSideList(List<Tickets> tickets){
) )
], ],
); );
} }

@ -1,10 +1,7 @@
import 'package:blinking_text/blinking_text.dart'; import 'package:blinking_text/blinking_text.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:queuing_system/core/config/config.dart';
import 'package:queuing_system/core/config/size_config.dart'; import 'package:queuing_system/core/config/size_config.dart';
import 'package:queuing_system/core/response_model/patient_call.dart'; import 'package:queuing_system/core/response_model/patient_call.dart';
import 'package:queuing_system/home/que_item/que_item.dart';
import 'package:queuing_system/utils/call_type.dart'; import 'package:queuing_system/utils/call_type.dart';
import 'package:queuing_system/widget/data_display/app_texts_widget.dart'; import 'package:queuing_system/widget/data_display/app_texts_widget.dart';
@ -15,61 +12,67 @@ class PriorityTickets extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final firstTicket = tickets[0]; final firstTicket = tickets[0];
final otherTickets = tickets.sublist(1,tickets.length); final otherTickets = tickets.sublist(1, tickets.length);
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const SizedBox(height: 20),
vTicketItem(ticketNo: "${firstTicket.callNo ?? ''}", callType: firstTicket.getCallType(), scale: 1.2, blink: true), vTicketItem(
ticketNo: firstTicket.callNoStr ?? '',
const SizedBox(height: 100), callType: firstTicket.getCallType(),
scale: 1,
if(tickets.length > 1) blink: true,
...[ roomNo: firstTicket.roomNo,
SizedBox(height: SizeConfig.getHeightMultiplier()*1.5), ),
Row( const SizedBox(height: 40),
mainAxisAlignment: MainAxisAlignment.spaceAround, if (tickets.length > 1) ...[
children: otherTickets.map((ticket) => vTicketItem(ticketNo: "${ticket.callNo ?? ''}", callType: ticket.getCallType(), scale: 0.8)).toList(), SizedBox(height: SizeConfig.getHeightMultiplier() * 1.5),
) Column(
] mainAxisAlignment: MainAxisAlignment.spaceAround,
children: otherTickets
.map((ticket) => Padding(
padding: EdgeInsets.only(top: SizeConfig.getHeightMultiplier() * 2),
child: vTicketItem(
ticketNo: ticket.callNoStr ?? '',
callType: ticket.getCallType(),
scale: 0.7,
roomNo: ticket.roomNo,
),
))
.toList(),
)
]
], ],
); );
} }
} }
class vTicketItem extends StatelessWidget{ class vTicketItem extends StatelessWidget {
final String ticketNo; final String ticketNo;
final String roomNo;
final CallType callType; final CallType callType;
final bool blink; final bool blink;
final double scale; final double scale;
vTicketItem({@required this.ticketNo, @required this.callType, this.scale, this.blink = false});
const vTicketItem({@required this.ticketNo, @required this.roomNo, @required this.callType, this.scale, this.blink = false});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Transform.scale( return Transform.scale(
scale: scale, scale: scale,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
BlinkText( BlinkText(ticketNo,
ticketNo, style: TextStyle(fontSize: SizeConfig.getWidthMultiplier() * 10, letterSpacing: -9.32, height: 0.5, fontWeight: FontWeight.bold),
style: TextStyle(
fontSize: SizeConfig.getWidthMultiplier() * 16,
letterSpacing: -9.32,
height: 0.5,
fontWeight: FontWeight.bold
),
beginColor: Colors.black, beginColor: Colors.black,
endColor: blink ? Colors.black.withOpacity(0.1) : Colors.black, endColor: blink ? Colors.black.withOpacity(0.1) : Colors.black,
// endColor: blink ? AppGlobal.appRedColor : Colors.black, // endColor: blink ? AppGlobal.appRedColor : Colors.black,
times: 0, times: 0,
duration: const Duration(seconds: 1) duration: const Duration(seconds: 1)),
),
// AppText( // AppText(
// ticketNo, // ticketNo,
// letterSpacing: -9.32, // letterSpacing: -9.32,
@ -77,18 +80,32 @@ class vTicketItem extends StatelessWidget{
// fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
// fontHeight: 0.7, // fontHeight: 0.7,
// ), // ),
const SizedBox(height: 10),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
callType.icon(SizeConfig.getHeightMultiplier()*2.5), callType.icon(SizeConfig.getHeightMultiplier() * 3),
const SizedBox(width: 10), const SizedBox(width: 10),
AppText( AppText(
callType.message('en'), callType.message('en'),
color: callType.color(), color: callType.color(),
letterSpacing: -1.5, letterSpacing: -1.5,
fontSize: SizeConfig.getWidthMultiplier() * 3.3, fontSize: SizeConfig.getWidthMultiplier() * 3.8,
fontWeight: FontWeight.w600,
fontHeight: 0.5,
),
Container(
color: Colors.grey.withOpacity(0.3),
width: 6,
height: SizeConfig.getHeightMultiplier() * 3,
margin: const EdgeInsets.symmetric(horizontal: 10),
),
AppText(
"Room: $roomNo",
color: callType.color(),
letterSpacing: -1.5,
fontSize: SizeConfig.getWidthMultiplier() * 3.8,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontHeight: 0.5, fontHeight: 0.5,
), ),

@ -22,11 +22,11 @@ class CallByVoice {
final characters = ticketNo.characters.toList(); final characters = ticketNo.characters.toList();
for (int i = 0; i < characters.length; i++) { for (int i = 0; i < characters.length; i++) {
final no = characters[i]; final no = characters[i];
if (no.isNotEmpty) { if (no.isNotEmpty && no != "-" && no != "_" && no != " ") {
await Future.delayed(const Duration(milliseconds: 200)); await Future.delayed(const Duration(milliseconds: 200));
await _player.stop(); await _player.stop();
await _player.setAsset('assets/voice_$lang/$no.mp3'); await _player.setAsset('assets/voice_$lang/${no.toUpperCase()}.mp3');
await _player.play(); await _player.play();
} }
} }

@ -9,10 +9,12 @@ import audio_session
import connectivity_macos import connectivity_macos
import just_audio import just_audio
import path_provider_macos import path_provider_macos
import text_to_speech_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
TextToSpeechMacOsPlugin.register(with: registry.registrar(forPlugin: "TextToSpeechMacOsPlugin"))
} }

@ -14,7 +14,7 @@ packages:
name: audio_session name: audio_session
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.10" version: "0.1.13"
blinking_text: blinking_text:
dependency: "direct main" dependency: "direct main"
description: description:
@ -190,7 +190,7 @@ packages:
name: just_audio name: just_audio
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.9.30" version: "0.9.31"
just_audio_platform_interface: just_audio_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -365,7 +365,7 @@ packages:
name: rxdart name: rxdart
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.27.5" version: "0.27.7"
signalr_core: signalr_core:
dependency: "direct main" dependency: "direct main"
description: description:
@ -427,6 +427,34 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.12" version: "0.4.12"
text_to_speech:
dependency: "direct main"
description:
name: text_to_speech
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.3"
text_to_speech_macos:
dependency: transitive
description:
name: text_to_speech_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.1"
text_to_speech_platform_interface:
dependency: transitive
description:
name: text_to_speech_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3"
text_to_speech_web:
dependency: transitive
description:
name: text_to_speech_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.2"
tuple: tuple:
dependency: transitive dependency: transitive
description: description:

@ -39,8 +39,8 @@ dependencies:
flutter_svg: ^1.0.3 flutter_svg: ^1.0.3
http: ^0.13.0 http: ^0.13.0
blinking_text: ^1.0.2 blinking_text: ^1.0.2
just_audio: ^0.9.31
just_audio: ^0.9.29 text_to_speech: ^0.2.3
#signalr core #signalr core
signalr_core: ^1.1.1 signalr_core: ^1.1.1

Loading…
Cancel
Save