diff --git a/flutter_showcase_app/android/app/build.gradle b/flutter_showcase_app/android/app/build.gradle index 90c405637e0a1c4bdd0af7d74fc74538fba83075..f4666334a754e2761239fe865a12b046e4c98fb1 100644 --- a/flutter_showcase_app/android/app/build.gradle +++ b/flutter_showcase_app/android/app/build.gradle @@ -41,7 +41,7 @@ android { applicationId "com.OlavBjorlykke" minSdkVersion 16 targetSdkVersion 28 - versionCode 2 + versionCode 4 versionName flutterVersionName } diff --git a/flutter_showcase_app/android/app/release/app-release.aab b/flutter_showcase_app/android/app/release/app-release.aab index 287ef543e31a6780235e0867d810d659c2131e62..1227d3a62806edd30fae148b449fa98c1a92b4fe 100644 Binary files a/flutter_showcase_app/android/app/release/app-release.aab and b/flutter_showcase_app/android/app/release/app-release.aab differ diff --git a/flutter_showcase_app/android/app/src/main/AndroidManifest.xml b/flutter_showcase_app/android/app/src/main/AndroidManifest.xml index 18441363922417e50777d8f85111845c8a9fb66b..5b414795162565906e01d6dc669ee7281e37cce9 100644 --- a/flutter_showcase_app/android/app/src/main/AndroidManifest.xml +++ b/flutter_showcase_app/android/app/src/main/AndroidManifest.xml @@ -6,6 +6,7 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> + <uses-permission android:name="android.permission.INTERNET" /> <application android:name="io.flutter.app.FlutterApplication" android:label="OlavBjorlykke" diff --git a/flutter_showcase_app/lib/screens/cv_screen.dart b/flutter_showcase_app/lib/screens/cv_screen.dart index b572f8d2b0f63608ba8f2c6cfac54336aaf00b14..e5120933aa8b4b3cc1ee63ce09c8c1e0347e83ee 100644 --- a/flutter_showcase_app/lib/screens/cv_screen.dart +++ b/flutter_showcase_app/lib/screens/cv_screen.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_phone_state/flutter_phone_state.dart'; +import 'package:flutter_email_sender/flutter_email_sender.dart'; + class CVScreen extends StatefulWidget { @@ -7,6 +10,8 @@ class CVScreen extends StatefulWidget { } class _CVScreenState extends State<CVScreen> { + + @override Widget build(BuildContext context) { return Scaffold( @@ -38,14 +43,16 @@ class _CVScreenState extends State<CVScreen> { ), Text( "Olav Bjørlykke", + textAlign: TextAlign.center, style: TextStyle( color: Colors.white, fontSize: 40, - fontFamily: 'fasterOne', + fontFamily: 'fasterOne' ), ), Text( "BRA KAR", + textAlign: TextAlign.center, style: TextStyle( color: Colors.orange.shade100, fontSize: 30, @@ -65,17 +72,24 @@ class _CVScreenState extends State<CVScreen> { margin: EdgeInsets.symmetric(vertical: 10, horizontal: 25), child: Padding( padding: const EdgeInsets.all(5.0), - child: ListTile( - leading: Icon( - Icons.phone, - color: Colors.orangeAccent - ), - title:Text( - "99208803", - style: TextStyle( - color: Colors.orangeAccent, - fontFamily: "SourceSansPro", - fontSize: 25, + child: GestureDetector( + onTap:(){ + FlutterPhoneState.startPhoneCall('+4799208803'); + }, + child: ListTile( + leading: Container( + child: Icon( + Icons.phone, + color: Colors.orangeAccent + ), + ), + title:Text( + "99208803", + style: TextStyle( + color: Colors.orangeAccent, + fontFamily: "SourceSansPro", + fontSize: 20, + ), ), ), ), @@ -86,17 +100,28 @@ class _CVScreenState extends State<CVScreen> { margin: EdgeInsets.symmetric(vertical: 10, horizontal: 25), child: Padding( padding: const EdgeInsets.all(5.0), - child: ListTile( - leading: Icon( - Icons.mail_outline, - color: Colors.orangeAccent - ), - title: Text( - " olavsbj@stud.ntnu.no", - style: TextStyle( - color: Colors.orangeAccent, - fontFamily: "SourceSansPro", - fontSize: 25, + child: GestureDetector( + onTap:(){ + FlutterEmailSender.send( + Email( + recipients: ['olavbj@gmail.com'], + subject: 'Kontakt Olav', + body: 'Hei Olav, jeg tar kontakt fra appen din' + ), + ); + }, + child: ListTile( + leading: Icon( + Icons.mail_outline, + color: Colors.orangeAccent + ), + title: Text( + " olavsbj@stud.ntnu.no", + style: TextStyle( + color: Colors.orangeAccent, + fontFamily: "SourceSansPro", + fontSize: 20, + ), ), ), ), diff --git a/flutter_showcase_app/lib/screens/home_screen.dart b/flutter_showcase_app/lib/screens/home_screen.dart index 2bf1d1d91f77567b4c3a416011d3e0bd4ced3fea..7a654666af39bab0853abdf3a6930d2a9e3f1d26 100644 --- a/flutter_showcase_app/lib/screens/home_screen.dart +++ b/flutter_showcase_app/lib/screens/home_screen.dart @@ -3,9 +3,11 @@ import 'package:flutter/material.dart'; import '../utilities/button_navigator.dart'; import 'cv_screen.dart'; import 'ship_screen.dart'; -import 'weather_screen.dart'; +import '../unused/weather_screen.dart'; import '../utilities/constants.dart'; import '../services/location_data.dart'; +import 'second_weather_screen.dart'; +import 'package:animated_text_kit/animated_text_kit.dart'; class HomeScreen extends StatefulWidget { @override @@ -34,31 +36,28 @@ class _HomeScreenState extends State<HomeScreen> { crossAxisAlignment: CrossAxisAlignment.stretch, children: <Widget>[ Center( - child: Text( - 'En app av Olav Bjørlykke', - style: kHomeScreenStyle, + child: TyperAnimatedTextKit( + text: ['En app av Olav Bjørlykke'], + textStyle: kHomeScreenStyle, + isRepeatingAnimation: false, + speed: Duration(milliseconds: 100), ), ), ButtonNavigator( buttonText: 'Kontaktinfo til Olav', + textFontSize: 20, screen: CVScreen(), ), - RaisedButton( - color: Colors.transparent, - padding: EdgeInsets.all(20), - child: Text( - 'Se været', - style: TextStyle(color: Colors.white, fontSize: 20) - ), - onPressed: (){ - LocationData locationData = LocationData(context); - locationData.getCurrentLocationData(); - } - ), ButtonNavigator( buttonText:'Beregn motstand på skip', + textFontSize: 20, screen: ShipScreen(), + ), + ButtonNavigator( + buttonText:'Se været', + textFontSize: 20, + screen: SecondWeatherScreen(), ) ], ), diff --git a/flutter_showcase_app/lib/screens/second_weather_screen.dart b/flutter_showcase_app/lib/screens/second_weather_screen.dart new file mode 100644 index 0000000000000000000000000000000000000000..d0093bf4c3a18cc0855cf7fb1ebffaf840e26042 --- /dev/null +++ b/flutter_showcase_app/lib/screens/second_weather_screen.dart @@ -0,0 +1,115 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; +import '../services/weather.dart'; +import '../services/weather_recomandation.dart'; +import '../services/location_data.dart'; +import '../utilities/constants.dart'; + +class SecondWeatherScreen extends StatefulWidget { + @override + _SecondWeatherScreenState createState() => _SecondWeatherScreenState(); +} + +class _SecondWeatherScreenState extends State<SecondWeatherScreen> { + + Weather weatherModel; + WeatherRecomandation recomandation; + bool loading; + + getWeatherData()async{ + weatherModel = Weather(await LocationData(context).getCurrentWeatherData()); + recomandation = WeatherRecomandation(weatherModel.temperature); + loading = false; + setState(() { + + }); + } + + initState(){ + super.initState(); + loading = true; + } + + @override + Widget build(BuildContext context) { + if(loading == true){ + getWeatherData(); + return Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage('images/foss.jpg'), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + Colors.white.withOpacity(0.8), BlendMode.dstATop), + ), + ), + child: Expanded( + child: Center( + child: SpinKitChasingDots( + color: Colors.white, + ) + ), + ) + ); + } else { + return Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage('images/foss.jpg'), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + Colors.white.withOpacity(0.8), BlendMode.dstATop), + ), + ), + child: Scaffold( + backgroundColor: Colors.transparent, + body: Container( + margin: EdgeInsets.all(5), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: <Widget>[ + SizedBox( + height: 20, + ), + Row( + children: <Widget>[ + FlatButton( + child: Icon(Icons.keyboard_return, color: Colors.white), + onPressed: () { + Navigator.pop(context); + }, + ), + ], + ), + Expanded( + child: Text( + 'Det er ${weatherModel.temperature.toString()}° ved ${weatherModel.city} i dag', + style: kWeatherScreenStyle, + ), + ), + Expanded( + child: Text( + 'Det er meldt: \n' + weatherModel.description, + style: kWeatherScreenStyle, + textAlign: TextAlign.right, + ), + ), + Expanded( + child: Text( + recomandation.getRecomandation(), + style: kWeatherScreenStyle, + ), + ), + ], + ), + ), + ), + ); + } + } +} + + + diff --git a/flutter_showcase_app/lib/screens/ship_screen.dart b/flutter_showcase_app/lib/screens/ship_screen.dart index f73352b046c34fa291d4116d193f2a5927881337..5b5836d798edc9f0fea5f11a35015b9cea60bf13 100644 --- a/flutter_showcase_app/lib/screens/ship_screen.dart +++ b/flutter_showcase_app/lib/screens/ship_screen.dart @@ -39,6 +39,7 @@ class _ShipScreenState extends State<ShipScreen> { crossAxisAlignment: CrossAxisAlignment.stretch, children: <Widget>[ Expanded( + flex: 5, child: ReusableCard( cardChild: Container( margin: EdgeInsets.all(5), @@ -50,6 +51,7 @@ class _ShipScreenState extends State<ShipScreen> { ), ), Expanded( + flex: 5, child: ReusableCard( cardChild: Column( mainAxisAlignment: MainAxisAlignment.center, @@ -83,6 +85,7 @@ class _ShipScreenState extends State<ShipScreen> { )), ), Expanded( + flex: 5, child: Row( children: <Widget>[ Expanded( @@ -164,10 +167,14 @@ class _ShipScreenState extends State<ShipScreen> { ], ), ), - ButtonNavigator( - color: Colors.red.shade700, - buttonText: 'KALKULER', - screen: ShipCalculationScreen(shipLength: length, shipVelocity: velocity, shipBlockCoeficient: blockCoefecient,), + Expanded( + flex: 2, + child: ButtonNavigator( + textFontSize: 14, + color: Colors.red.shade700, + buttonText: 'KALKULER', + screen: ShipCalculationScreen(shipLength: length, shipVelocity: velocity, shipBlockCoeficient: blockCoefecient,), + ), ), ], )); diff --git a/flutter_showcase_app/lib/services/location_data.dart b/flutter_showcase_app/lib/services/location_data.dart index 1c7e02334a7a821bbcecb92f7309b345ebf1b378..d2d35fc2c022903993fbb9bfe650d9e86a3b5ee4 100644 --- a/flutter_showcase_app/lib/services/location_data.dart +++ b/flutter_showcase_app/lib/services/location_data.dart @@ -1,37 +1,48 @@ import 'package:OlavBjorlykke/services/geolocater.dart'; import 'package:flutter/material.dart'; -import '../screens/weather_screen.dart'; +import '../unused/weather_screen.dart'; import '../services/network_datacall.dart'; import '../utilities/constants.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; -class LocationData{ +class LocationData { LocationData(this.context); var context; Geolocater location; dynamic weatherData; - Future getCurrentLocationData()async{ - if(location == null) { + Future getCurrentWeatherData() async { + if (location == null) { Geolocater location = Geolocater(); await location.getCurrentLocation(); NetworkDatacall datacall = NetworkDatacall( - 'https://api.openweathermap.org/data/2.5/weather?lat=${location - .latitude}&lon=${location - .longtitude}&appid=$OpenWeatherMapApiKey&units=metric&lang=no' - ); + 'https://api.openweathermap.org/data/2.5/weather?lat=${location.latitude}&lon=${location.longtitude}&appid=$OpenWeatherMapApiKey&units=metric&lang=no'); + + weatherData = await datacall.getData(); + + return weatherData; + } + } + + Future getCurrentLocationData() async { + if (location == null) { + Geolocater location = Geolocater(); + await location.getCurrentLocation(); + + NetworkDatacall datacall = NetworkDatacall( + 'https://api.openweathermap.org/data/2.5/weather?lat=${location.latitude}&lon=${location.longtitude}&appid=$OpenWeatherMapApiKey&units=metric&lang=no'); weatherData = await datacall.getData(); Navigator.push(context, MaterialPageRoute(builder: (context) { return WeatherScreen(weatherData); })); - } else{ + } else { Navigator.push(context, MaterialPageRoute(builder: (context) { return WeatherScreen(weatherData); })); } } -} \ No newline at end of file +} diff --git a/flutter_showcase_app/lib/screens/weather_screen.dart b/flutter_showcase_app/lib/unused/weather_screen.dart similarity index 94% rename from flutter_showcase_app/lib/screens/weather_screen.dart rename to flutter_showcase_app/lib/unused/weather_screen.dart index 0afca81226aca21132dfe32793e539ee3e073585..fa1b25b0ccd18988541e0731992edc5807c37f61 100644 --- a/flutter_showcase_app/lib/screens/weather_screen.dart +++ b/flutter_showcase_app/lib/unused/weather_screen.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import '../services/geolocater.dart'; import '../services/weather.dart'; import '../utilities/constants.dart'; -import 'home_screen.dart'; +import '../screens/home_screen.dart'; import '../services/weather_recomandation.dart'; class WeatherScreen extends StatefulWidget { @@ -85,6 +85,3 @@ class _WeatherScreenState extends State<WeatherScreen> { ); } } - -//TODO lag modell for å gi tilbakemelding på været -//TODO Finn ut hvor kontoret til MGMT er og last in værdate for dem også diff --git a/flutter_showcase_app/lib/utilities/button_navigator.dart b/flutter_showcase_app/lib/utilities/button_navigator.dart index cbfadbe8f2360392821a69c5f51606ad5f92f242..74703d503faa52c7a9e1af19c175b683e881e3e2 100644 --- a/flutter_showcase_app/lib/utilities/button_navigator.dart +++ b/flutter_showcase_app/lib/utilities/button_navigator.dart @@ -3,11 +3,12 @@ import 'package:flutter/material.dart'; class ButtonNavigator extends StatelessWidget { - ButtonNavigator({this.buttonText, this.screen, this.color = Colors.transparent}); + ButtonNavigator({this.buttonText, this.screen, this.color = Colors.transparent, this.textFontSize}); final String buttonText; final screen; final Color color; + final double textFontSize; @override Widget build(BuildContext context) { @@ -15,10 +16,10 @@ class ButtonNavigator extends StatelessWidget { margin: EdgeInsets.all(15), child: RaisedButton( color: color, - padding: EdgeInsets.all(20), + padding: EdgeInsets.all(10), child: Text( buttonText, - style: TextStyle(color: Colors.white, fontSize: 20) + style: TextStyle(color: Colors.white, fontSize: textFontSize) ), onPressed: (){ Navigator.push(context, MaterialPageRoute(builder:(context){ diff --git a/flutter_showcase_app/local_history.patch b/flutter_showcase_app/local_history.patch new file mode 100644 index 0000000000000000000000000000000000000000..3251d49eadbd1dcd02edd09e51917a5b5280e0ab --- /dev/null +++ b/flutter_showcase_app/local_history.patch @@ -0,0 +1,175 @@ +Index: lib/screens/weather_screen.dart +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +--- lib/screens/weather_screen.dart (date 1590961155980) ++++ lib/screens/weather_screen.dart (date 1590961155980) +@@ -5,12 +5,9 @@ + import '../utilities/constants.dart'; + import 'home_screen.dart'; + import '../services/weather_recomandation.dart'; ++import '../services/location_data.dart'; + + class WeatherScreen extends StatefulWidget { +- WeatherScreen(this.weatherData); +- +- final dynamic weatherData; +- + @override + _WeatherScreenState createState() => _WeatherScreenState(); + } +@@ -18,71 +15,97 @@ + class _WeatherScreenState extends State<WeatherScreen> { + Weather weatherModel; + WeatherRecomandation recomandation; ++ bool textVisible; + + @override + void initState() { +- // TODO: implement initState + super.initState(); +- weatherModel = Weather(widget.weatherData); ++ textVisible = false; ++ } ++ ++ Future getWeatherData() async { ++ weatherModel = await LocationData(context).getCurrentLocationData(); + recomandation = WeatherRecomandation(weatherModel.temperature); ++ textVisible = true; ++ print('data recieved'); + } + + @override + Widget build(BuildContext context) { +- return Container( +- decoration: BoxDecoration( +- image: DecorationImage( +- image: AssetImage('images/coastal_picture.jpg'), +- fit: BoxFit.cover, +- colorFilter: ColorFilter.mode( +- Colors.white.withOpacity(0.8), BlendMode.dstATop), +- ), +- ), +- child: Scaffold( +- backgroundColor: Colors.transparent, +- body: Container( +- margin: EdgeInsets.all(5), +- child: Column( +- mainAxisAlignment: MainAxisAlignment.spaceEvenly, +- crossAxisAlignment: CrossAxisAlignment.stretch, +- children: <Widget>[ +- SizedBox( +- height: 20, +- ), +- Row( +- children: <Widget>[ +- FlatButton( +- child: Icon(Icons.keyboard_return, color: Colors.white), +- onPressed: () { +- Navigator.pop(context); +- }, +- ), +- ], +- ), +- Expanded( +- child: Text( +- 'Det er ${weatherModel.temperature.toString()}° ved ${weatherModel.city} i dag', +- style: kWeatherScreenStyle, +- ), +- ), +- Expanded( +- child: Text( +- 'Det er meldt: \n' + weatherModel.description, +- style: kWeatherScreenStyle, +- textAlign: TextAlign.right, +- ), +- ), +- Expanded( +- child: Text( +- recomandation.getRecomandation(), +- style: kWeatherScreenStyle, +- ), +- ), +- ], +- ), +- ), +- ), +- ); ++ if (textVisible) { ++ return Container( ++ decoration: BoxDecoration( ++ image: DecorationImage( ++ image: AssetImage('images/foss.jpg'), ++ fit: BoxFit.cover, ++ colorFilter: ColorFilter.mode( ++ Colors.white.withOpacity(0.8), BlendMode.dstATop), ++ ), ++ ), ++ child: Visibility( ++ visible: textVisible, ++ replacement: Text('placeholder'), ++ child: Scaffold( ++ backgroundColor: Colors.transparent, ++ body: Container( ++ margin: EdgeInsets.all(5), ++ child: Column( ++ mainAxisAlignment: MainAxisAlignment.spaceEvenly, ++ crossAxisAlignment: CrossAxisAlignment.stretch, ++ children: <Widget>[ ++ SizedBox( ++ height: 20, ++ ), ++ Row( ++ children: <Widget>[ ++ FlatButton( ++ child: Icon(Icons.keyboard_return, color: Colors.white), ++ onPressed: () { ++ Navigator.pop(context); ++ }, ++ ), ++ ], ++ ), ++ Expanded( ++ child: Text( ++ 'Det er ${weatherModel.temperature.toString()}° ved ${weatherModel.city} i dag', ++ style: kWeatherScreenStyle, ++ ), ++ ), ++ Expanded( ++ child: Text( ++ 'Det er meldt: \n' + weatherModel.description, ++ style: kWeatherScreenStyle, ++ textAlign: TextAlign.right, ++ ), ++ ), ++ Expanded( ++ child: Text( ++ recomandation.getRecomandation(), ++ style: kWeatherScreenStyle, ++ ), ++ ), ++ ], ++ ), ++ ), ++ ), ++ ), ++ ); ++ } else { ++ setState(() { ++ getWeatherData(); ++ }); ++ return Container( ++ decoration: BoxDecoration( ++ image: DecorationImage( ++ image: AssetImage('images/foss.jpg'), ++ fit: BoxFit.cover, ++ colorFilter: ColorFilter.mode( ++ Colors.white.withOpacity(0.8), BlendMode.dstATop), ++ ), ++ ), ++ ); ++ } + } + } + diff --git a/flutter_showcase_app/pubspec.lock b/flutter_showcase_app/pubspec.lock index 848fd0271206e5cac272672da59bd2be7bd5243f..ebcc9d5cc8f5cef17a96243446809970d9bf4e83 100644 --- a/flutter_showcase_app/pubspec.lock +++ b/flutter_showcase_app/pubspec.lock @@ -1,6 +1,13 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + animated_text_kit: + dependency: "direct main" + description: + name: animated_text_kit + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" archive: dependency: transitive description: @@ -76,6 +83,20 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_email_sender: + dependency: "direct main" + description: + name: flutter_email_sender + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + flutter_phone_state: + dependency: "direct main" + description: + name: flutter_phone_state + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.9" flutter_spinkit: dependency: "direct main" description: @@ -88,6 +109,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" font_awesome_flutter: dependency: "direct main" description: @@ -137,6 +163,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.5" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.4" matcher: dependency: transitive description: @@ -172,6 +205,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.4.0" + platform_detect: + dependency: transitive + description: + name: platform_detect + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.4" quiver: dependency: transitive description: @@ -205,6 +259,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" string_scanner: dependency: transitive description: @@ -233,6 +294,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.6" + url_launcher: + dependency: transitive + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "5.4.10" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+7" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.7" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+6" + uuid: + dependency: transitive + description: + name: uuid + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" vector_math: dependency: transitive description: diff --git a/flutter_showcase_app/pubspec.yaml b/flutter_showcase_app/pubspec.yaml index 840132b31521dc01039f5013394e652c6867167c..c5f9201b4da637db24dd0adcc0e127f7c7a40a53 100644 --- a/flutter_showcase_app/pubspec.yaml +++ b/flutter_showcase_app/pubspec.yaml @@ -5,12 +5,15 @@ description: A new Flutter application. # pub.dev using `pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev -version: 1.0.0+1 +version: 3.0.3+3 environment: sdk: ">=2.7.0 <3.0.0" dependencies: + animated_text_kit: ^2.2.0 + flutter_email_sender: ^3.0.1 + flutter_phone_state: ^0.5.8 geolocator: ^5.3.1 http: ^0.12.1 font_awesome_flutter: ^8.8.1