From 9d47f60d0fa248a6783f9fe73770431ee5fc62b0 Mon Sep 17 00:00:00 2001 From: Inderjeet Kaur Date: Tue, 22 Nov 2022 18:58:35 +0530 Subject: [PATCH 1/8] Add network checks --- app/assets/images/no_internet.png | Bin 0 -> 117655 bytes app/lib/controllers/network_controller.dart | 57 ++++ .../screens/HomeScreens/chat/ChatScreen.dart | 26 +- app/lib/screens/HomeScreens/faq/Overview.dart | 227 +++++++++------- app/lib/screens/HomeScreens/news/News.dart | 245 ++++++++++-------- app/lib/screens/OnboardingScreens/LogIn.dart | 17 +- app/lib/screens/OnboardingScreens/Signup.dart | 16 +- app/lib/screens/SideMenuScreens/ToDo.dart | 128 +++++---- app/lib/widgets/CrossSigning.dart | 9 +- app/lib/widgets/NewsSideBar.dart | 41 +-- app/pubspec.lock | 28 ++ app/pubspec.yaml | 1 + 12 files changed, 510 insertions(+), 285 deletions(-) create mode 100644 app/assets/images/no_internet.png create mode 100644 app/lib/controllers/network_controller.dart diff --git a/app/assets/images/no_internet.png b/app/assets/images/no_internet.png new file mode 100644 index 0000000000000000000000000000000000000000..486a92decc5d570474871160b6d7e4ad6ce38cd7 GIT binary patch literal 117655 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μq?A4)&ed_|f|GVZO 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 _getConnectionType() async { + ConnectivityResult? connectivityResult; + try { + connectivityResult = await (_connectivity.checkConnectivity()); + } on PlatformException catch (e) { + print(e); + } + return _updateState(connectivityResult!); + } + + void _updateState(ConnectivityResult result) { + switch (result) { + case ConnectivityResult.wifi: + connectionType = '1'.obs; + update(); + break; + case ConnectivityResult.mobile: + connectionType = '2'.obs; + update(); + break; + case ConnectivityResult.none: + connectionType = '0'.obs; + update(); + break; + default: + Get.snackbar('Network Error', 'Failed to get Network Status'); + break; + } + } + + @override + void onClose() { + _streamSubscription.cancel(); + super.onClose(); + } +} diff --git a/app/lib/screens/HomeScreens/chat/ChatScreen.dart b/app/lib/screens/HomeScreens/chat/ChatScreen.dart index e7de929d6132..b712df3a0b5c 100644 --- a/app/lib/screens/HomeScreens/chat/ChatScreen.dart +++ b/app/lib/screens/HomeScreens/chat/ChatScreen.dart @@ -9,6 +9,7 @@ import 'package:effektio/common/store/themes/ChatTheme.dart'; import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/chat_list_controller.dart'; import 'package:effektio/controllers/chat_room_controller.dart'; +import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/screens/HomeScreens/chat/ChatProfile.dart'; import 'package:effektio/widgets/AppCommon.dart'; import 'package:effektio/widgets/CustomAvatar.dart'; @@ -59,12 +60,15 @@ class _ChatScreenState extends State bool isEmojiContainerVisible = false; static var messageIndex = 0; late final tabBarController = TabController(length: 3, vsync: this); + final networkController = Get.put(NetworkController()); @override void initState() { super.initState(); - roomController.setCurrentRoom(widget.room); + if (networkController.connectionType.value != '0') { + roomController.setCurrentRoom(widget.room); + } } @override @@ -262,7 +266,25 @@ class _ChatScreenState extends State body: Obx( () => SafeArea( bottom: false, - child: buildBody(context), + child: networkController.connectionType.value == '0' + ? Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/no_internet.png', + scale: 5, + ), + const Text( + 'No internet\nPlease turn on internet to process', + style: SideMenuAndProfileTheme.profileMenuStyle, + textAlign: TextAlign.center, + ), + ], + ), + ) + : buildBody(context), ), ), ); diff --git a/app/lib/screens/HomeScreens/faq/Overview.dart b/app/lib/screens/HomeScreens/faq/Overview.dart index b9575d0ad2d4..10b755893d30 100644 --- a/app/lib/screens/HomeScreens/faq/Overview.dart +++ b/app/lib/screens/HomeScreens/faq/Overview.dart @@ -1,6 +1,6 @@ import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/FaqController.dart'; -// import 'package:effektio/screens/HomeScreens/faq/Editor.dart'; +import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/widgets/FaqListItem.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart'; import 'package:flutter/material.dart'; @@ -16,112 +16,145 @@ class FaqOverviewScreen extends StatefulWidget { class _FaqOverviewScreenState extends State { final faqController = Get.put(FaqController()); + final networkController = Get.put(NetworkController()); @override Widget build(BuildContext context) { return FutureBuilder( future: widget.client.faqs(), builder: (BuildContext context, AsyncSnapshot snapshot) { - if (!snapshot.hasData) { - return Container( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - color: AppCommonTheme.backgroundColor, - child: const Center( - child: SizedBox( - height: 50, - width: 50, - child: CircularProgressIndicator( - color: AppCommonTheme.primaryColor, - ), - ), - ), - ); - } else { - return Scaffold( - body: Container( - decoration: PinsTheme.pinsDecoration, - child: Padding( - padding: const EdgeInsets.only(top: 25), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.only(left: 12), - child: Text('Pins', style: PinsTheme.titleTextStyle), - ), - Padding( - padding: const EdgeInsets.only( - top: 5, - bottom: 6, - left: 10, - right: 10, - ), - child: TextField( - onChanged: (value) { - faqController.searchedData(value, snapshot); - }, - controller: faqController.searchController, - style: ToDoTheme.taskTitleTextStyle.copyWith( - fontWeight: FontWeight.w500, - ), - cursorColor: ToDoTheme.primaryTextColor, - decoration: InputDecoration( - hintStyle: const TextStyle( - color: Colors.white, - fontSize: 13, - ), - suffixIcon: const Icon( - Icons.search, - color: Colors.white, - ), - contentPadding: const EdgeInsets.only( - left: 12, - bottom: 2, - top: 2, + return Obx( + () => Container( + child: networkController.connectionType.value == '0' + ? Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/no_internet.png', + scale: 5, ), - border: OutlineInputBorder( - borderSide: const BorderSide(color: Colors.white), - borderRadius: BorderRadius.circular(20.0), + const Text( + 'No internet\nPlease turn on internet to process', + style: SideMenuAndProfileTheme.profileMenuStyle, + textAlign: TextAlign.center, ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide(color: Colors.white), - borderRadius: BorderRadius.circular(30.0), - ), - enabledBorder: OutlineInputBorder( - borderSide: const BorderSide(color: Colors.white), - borderRadius: BorderRadius.circular(30.0), - ), - ), + ], ), - ), - GetBuilder( - builder: (FaqController controller) { - return Expanded( - child: ListView.builder( - padding: const EdgeInsets.all(8), - shrinkWrap: true, - itemCount: controller.searchData.isEmpty - ? snapshot.requireData.length - : controller.searchData.length, - itemBuilder: (BuildContext context, int index) { - return FaqListItem( - client: widget.client, - faq: controller.searchData.isEmpty - ? snapshot.requireData[index] - : controller.searchData[index], - ); - }, + ) + : (!snapshot.hasData) + ? Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + color: AppCommonTheme.backgroundColor, + child: const Center( + child: SizedBox( + height: 50, + width: 50, + child: CircularProgressIndicator( + color: AppCommonTheme.primaryColor, + ), + ), + ), + ) + : Scaffold( + body: Container( + decoration: PinsTheme.pinsDecoration, + child: Padding( + padding: const EdgeInsets.only(top: 25), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.only(left: 12), + child: Text('Pins', + style: PinsTheme.titleTextStyle), + ), + Padding( + padding: const EdgeInsets.only( + top: 5, + bottom: 6, + left: 10, + right: 10, + ), + child: TextField( + onChanged: (value) { + faqController.searchedData( + value, snapshot); + }, + controller: + faqController.searchController, + style: + ToDoTheme.taskTitleTextStyle.copyWith( + fontWeight: FontWeight.w500, + ), + cursorColor: ToDoTheme.primaryTextColor, + decoration: InputDecoration( + hintStyle: const TextStyle( + color: Colors.white, + fontSize: 13, + ), + suffixIcon: const Icon( + Icons.search, + color: Colors.white, + ), + contentPadding: const EdgeInsets.only( + left: 12, + bottom: 2, + top: 2, + ), + border: OutlineInputBorder( + borderSide: const BorderSide( + color: Colors.white), + borderRadius: + BorderRadius.circular(20.0), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: Colors.white), + borderRadius: + BorderRadius.circular(30.0), + ), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: Colors.white), + borderRadius: + BorderRadius.circular(30.0), + ), + ), + ), + ), + GetBuilder( + builder: (FaqController controller) { + return Expanded( + child: ListView.builder( + padding: const EdgeInsets.all(8), + shrinkWrap: true, + itemCount: controller + .searchData.isEmpty + ? snapshot.requireData.length + : controller.searchData.length, + itemBuilder: (BuildContext context, + int index) { + return FaqListItem( + client: widget.client, + faq: controller.searchData.isEmpty + ? snapshot.requireData[index] + : controller + .searchData[index], + ); + }, + ), + ); + }, + ), + ], + ), + ), ), - ); - }, - ), - ], - ), - ), - ), - ); - } + )), + ); }, ); } diff --git a/app/lib/screens/HomeScreens/news/News.dart b/app/lib/screens/HomeScreens/news/News.dart index bbecb185fea5..d28ea0cbe881 100644 --- a/app/lib/screens/HomeScreens/news/News.dart +++ b/app/lib/screens/HomeScreens/news/News.dart @@ -1,9 +1,11 @@ import 'package:effektio/common/animations/LikeAnimation.dart'; import 'package:effektio/common/store/themes/SeperatedThemes.dart'; +import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/widgets/NewsItem.dart'; import 'package:effektio/widgets/SideMenu.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart'; import 'package:flutter/material.dart'; +import 'package:get/get.dart'; class NewsScreen extends StatefulWidget { final Client client; @@ -24,6 +26,7 @@ class NewsScreen extends StatefulWidget { class _NewsScreenState extends State with SingleTickerProviderStateMixin { late AnimationController controller; + final networkController = Get.put(NetworkController()); @override void initState() { @@ -40,121 +43,145 @@ class _NewsScreenState extends State return FutureBuilder( future: widget.client.latestNews(), builder: (BuildContext context, AsyncSnapshot snapshot) { - if (!snapshot.hasData) { - return SizedBox( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - child: const Center( - child: SizedBox( - height: 50, - width: 50, - child: CircularProgressIndicator( - color: AppCommonTheme.primaryColor, - ), - ), - ), - ); - } else { - //final items = snapshot.requireData.toList(); - return Scaffold( - extendBodyBehindAppBar: true, - appBar: AppBar( - elevation: 0, - backgroundColor: Colors.transparent, - leading: Builder( - builder: (BuildContext context) { - return IconButton( - icon: Container( - margin: const EdgeInsets.only(bottom: 10, left: 10), - child: CircleAvatar( - backgroundColor: AppCommonTheme.primaryColor, - child: Image.asset('assets/images/hamburger.png'), - ), - ), - onPressed: () { - Scaffold.of(context).openDrawer(); - }, - tooltip: - MaterialLocalizations.of(context).openAppDrawerTooltip, - ); - }, - ), - centerTitle: true, - title: const ButtonBar( - alignment: MainAxisAlignment.center, - children: [ - Text( - 'All', - style: TextStyle( - color: Colors.white, - fontSize: 14, - shadows: [ - Shadow( - blurRadius: 1.0, - color: Colors.black, + return Obx( + () => Container( + child: networkController.connectionType.value == '0' + ? Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/no_internet.png', + scale: 5, + ), + const Text( + 'No internet\nPlease turn on internet to process', + style: SideMenuAndProfileTheme.profileMenuStyle, + textAlign: TextAlign.center, ), ], - fontWeight: FontWeight.w100, ), - ), - Text( - 'News', - style: TextStyle( - color: Colors.white, - fontSize: 14, - shadows: [ - Shadow( - blurRadius: 5.0, - color: Colors.white, + ) + : (!snapshot.hasData) + ? SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: const Center( + child: SizedBox( + height: 50, + width: 50, + child: CircularProgressIndicator( + color: AppCommonTheme.primaryColor, + ), + ), ), - Shadow( - blurRadius: 3.0, - color: Colors.black, + ) + : Scaffold( + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + backgroundColor: Colors.transparent, + leading: Builder( + builder: (BuildContext context) { + return IconButton( + icon: Container( + margin: const EdgeInsets.only( + bottom: 10, + left: 10, + ), + child: CircleAvatar( + backgroundColor: + AppCommonTheme.primaryColor, + child: Image.asset( + 'assets/images/hamburger.png'), + ), + ), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + tooltip: MaterialLocalizations.of(context) + .openAppDrawerTooltip, + ); + }, + ), + centerTitle: true, + title: const ButtonBar( + alignment: MainAxisAlignment.center, + children: [ + Text( + 'All', + style: TextStyle( + color: Colors.white, + fontSize: 14, + shadows: [ + Shadow( + blurRadius: 1.0, + color: Colors.black, + ), + ], + fontWeight: FontWeight.w100, + ), + ), + Text( + 'News', + style: TextStyle( + color: Colors.white, + fontSize: 14, + shadows: [ + Shadow( + blurRadius: 5.0, + color: Colors.white, + ), + Shadow( + blurRadius: 3.0, + color: Colors.black, + ), + ], + fontWeight: FontWeight.w900, + ), + ), + Text( + 'Stories', + style: TextStyle( + color: Colors.white, + fontSize: 14, + shadows: [ + Shadow( + blurRadius: 1.0, + color: Colors.black, + ), + ], + fontWeight: FontWeight.w100, + ), + ), + ], + ), ), - ], - fontWeight: FontWeight.w900, - ), - ), - Text( - 'Stories', - style: TextStyle( - color: Colors.white, - fontSize: 14, - shadows: [ - Shadow( - blurRadius: 1.0, - color: Colors.black, + drawer: SideDrawer( + isGuest: widget.client.isGuest(), + userId: widget.client.userId().toString(), + displayName: widget.displayName, + displayAvatar: widget.displayAvatar, ), - ], - fontWeight: FontWeight.w100, - ), - ), - ], - ), - ), - drawer: SideDrawer( - isGuest: widget.client.isGuest(), - userId: widget.client.userId().toString(), - displayName: widget.displayName, - displayAvatar: widget.displayAvatar, - ), - body: PageView.builder( - itemCount: snapshot.requireData.length, - onPageChanged: (int page) {}, - scrollDirection: Axis.vertical, - itemBuilder: (context, index) => InkWell( - onDoubleTap: () { - LikeAnimation.run(index); - }, - child: NewsItem( - client: widget.client, - news: snapshot.requireData[index], - index: index, - ), - ), - ), - ); - } + body: PageView.builder( + itemCount: snapshot.requireData.length, + onPageChanged: (int page) {}, + scrollDirection: Axis.vertical, + itemBuilder: (context, index) => InkWell( + onDoubleTap: () { + LikeAnimation.run(index); + }, + child: NewsItem( + client: widget.client, + news: snapshot.requireData[index], + index: index, + ), + ), + ), + ), + ), + ); }, ); } diff --git a/app/lib/screens/OnboardingScreens/LogIn.dart b/app/lib/screens/OnboardingScreens/LogIn.dart index 972124961328..829b81d2c74f 100644 --- a/app/lib/screens/OnboardingScreens/LogIn.dart +++ b/app/lib/screens/OnboardingScreens/LogIn.dart @@ -1,5 +1,6 @@ import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/login_controller.dart'; +import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/widgets/OnboardingWidget.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -17,12 +18,13 @@ class LoginScreen extends StatefulWidget { class _LoginScreenState extends State { final formKey = GlobalKey(); final loginController = Get.put(LoginController()); + final networkController = Get.put(NetworkController()); @override void dispose() { // Clean up the controller when the widget is disposed. Get.delete(); - + Get.delete(); super.dispose(); } @@ -111,8 +113,17 @@ class _LoginScreenState extends State { onPressed: () async { controller.isSubmitting = true; if (formKey.currentState!.validate()) { - if (await validateLogin()) { - Navigator.pushReplacementNamed(context, '/'); + if (networkController.connectionType.value == + '0') { + Get.snackbar( + 'No internet', + 'Please turn on internet to continue', + colorText: Colors.white, + ); + } else { + if (await validateLogin()) { + Navigator.pushReplacementNamed(context, '/'); + } } } }, diff --git a/app/lib/screens/OnboardingScreens/Signup.dart b/app/lib/screens/OnboardingScreens/Signup.dart index d5b1ce3b28eb..ea07671f9013 100644 --- a/app/lib/screens/OnboardingScreens/Signup.dart +++ b/app/lib/screens/OnboardingScreens/Signup.dart @@ -1,4 +1,5 @@ import 'package:effektio/common/store/themes/SeperatedThemes.dart'; +import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/controllers/signup_controller.dart'; import 'package:effektio/screens/OnboardingScreens/LogIn.dart'; import 'package:effektio/widgets/OnboardingWidget.dart'; @@ -19,12 +20,13 @@ class SignupScreen extends StatefulWidget { class _SignupScreentate extends State { final formKey = GlobalKey(); final SignUpController signUpController = Get.put(SignUpController()); + final networkController = Get.put(NetworkController()); @override void dispose() { // Clean up the controller when the widget is disposed. Get.delete(); - + Get.delete(); super.dispose(); } @@ -188,8 +190,16 @@ class _SignupScreentate extends State { return CustomOnbaordingButton( onPressed: () async { if (formKey.currentState!.validate()) { - if (await validateSignUp()) { - Navigator.pushReplacementNamed(context, '/'); + if (networkController.connectionType.value == '0') { + Get.snackbar( + 'No internet', + 'Please turn on internet to continue', + colorText: Colors.white, + ); + } else { + if (await validateSignUp()) { + Navigator.pushReplacementNamed(context, '/'); + } } } }, diff --git a/app/lib/screens/SideMenuScreens/ToDo.dart b/app/lib/screens/SideMenuScreens/ToDo.dart index 89d15bb87880..837e0042df19 100644 --- a/app/lib/screens/SideMenuScreens/ToDo.dart +++ b/app/lib/screens/SideMenuScreens/ToDo.dart @@ -1,5 +1,6 @@ import 'package:effektio/common/store/MockData.dart' as mock; import 'package:effektio/common/store/themes/SeperatedThemes.dart'; +import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/controllers/todo_controller.dart'; import 'package:effektio/widgets/AppCommon.dart'; import 'package:flutter/material.dart'; @@ -14,6 +15,7 @@ class ToDoScreen extends StatefulWidget { class _ToDoScreenState extends State { final ToDoController todoController = ToDoController.instance; + final networkController = Get.put(NetworkController()); List buttonText = ['Mine', 'All Teams', 'Unassigned']; @override @@ -32,60 +34,86 @@ class _ToDoScreenState extends State { @override Widget build(BuildContext context) { - return Scaffold( - extendBodyBehindAppBar: true, - floatingActionButtonLocation: FloatingActionButtonLocation.miniEndFloat, - floatingActionButton: FloatingActionButton( - backgroundColor: ToDoTheme.floatingABColor, - onPressed: () { - showNotYetImplementedMsg( - context, - 'Add Task-List Action not yet implemented', - ); - }, - child: const Icon(Icons.add_outlined, size: 25), - ), - body: Container( - decoration: ToDoTheme.toDoDecoration, - child: Padding( - padding: const EdgeInsets.only(top: 25), - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.only(left: 12), - child: Text('Tasks', style: ToDoTheme.titleTextStyle), + return Obx( + () => Container( + child: networkController.connectionType.value == '0' + ? Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/no_internet.png', + scale: 5, + ), + const Text( + 'No internet\nPlease turn on internet to process', + style: SideMenuAndProfileTheme.profileMenuStyle, + textAlign: TextAlign.center, + ), + ], ), - const Padding( - padding: EdgeInsets.only(left: 12, top: 10), - child: Text( - mock.loremPara1, - style: ToDoTheme.subtitleTextStyle, - ), + ) + : Scaffold( + extendBodyBehindAppBar: true, + floatingActionButtonLocation: + FloatingActionButtonLocation.miniEndFloat, + floatingActionButton: FloatingActionButton( + backgroundColor: ToDoTheme.floatingABColor, + onPressed: () { + showNotYetImplementedMsg( + context, + 'Add Task-List Action not yet implemented', + ); + }, + child: const Icon(Icons.add_outlined, size: 25), ), - Padding( - padding: const EdgeInsets.only(left: 12, top: 15), - child: Wrap( - direction: Axis.horizontal, - spacing: 5.0, - children: List.generate(buttonText.length, (int index) { - return radioButton(text: buttonText[index], index: index); - }), + body: Container( + decoration: ToDoTheme.toDoDecoration, + child: Padding( + padding: const EdgeInsets.only(top: 25), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.only(left: 12), + child: + Text('Tasks', style: ToDoTheme.titleTextStyle), + ), + const Padding( + padding: EdgeInsets.only(left: 12, top: 10), + child: Text( + mock.loremPara1, + style: ToDoTheme.subtitleTextStyle, + ), + ), + Padding( + padding: const EdgeInsets.only(left: 12, top: 15), + child: Wrap( + direction: Axis.horizontal, + spacing: 5.0, + children: + List.generate(buttonText.length, (int index) { + return radioButton( + text: buttonText[index], index: index); + }), + ), + ), + ListView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: todoController.todoList!.length, + itemBuilder: (BuildContext context, int index) { + return todoController.todoList![index]; + }, + ), + ], + ), + ), ), ), - ListView.builder( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: todoController.todoList!.length, - itemBuilder: (BuildContext context, int index) { - return todoController.todoList![index]; - }, - ), - ], - ), - ), - ), + ), ), ); } diff --git a/app/lib/widgets/CrossSigning.dart b/app/lib/widgets/CrossSigning.dart index a9a1fb97ca25..27a0c8f8c166 100644 --- a/app/lib/widgets/CrossSigning.dart +++ b/app/lib/widgets/CrossSigning.dart @@ -53,7 +53,7 @@ class CrossSigning { if (!_shouldShowNewDevicePopup()) { return; } - Get.generalDialog( + /*Get.generalDialog( pageBuilder: (context, anim1, anim2) { return Container( width: MediaQuery.of(context).size.width, @@ -74,6 +74,13 @@ class CrossSigning { ), ); }, + );*/ + Get.defaultDialog( + title: 'New DeviceDetected', + onConfirm: () async { + await event.requestVerificationToUser(); + Get.back(); + }, ); }); } diff --git a/app/lib/widgets/NewsSideBar.dart b/app/lib/widgets/NewsSideBar.dart index f66d314697a6..a1ed4d76523c 100644 --- a/app/lib/widgets/NewsSideBar.dart +++ b/app/lib/widgets/NewsSideBar.dart @@ -180,26 +180,27 @@ class _NewsSideBarState extends State { ), ), ), - GetBuilder(builder: - (NewsCommentController newsCommentController) { - return Expanded( - child: ListView.builder( - physics: const BouncingScrollPhysics(), - controller: scrollController, - itemCount: 10, - itemBuilder: (context, index) { - return Padding( - padding: const EdgeInsets.all(12), - child: CommentView( - commentModel: - newsCommentController.listComments[index], - postition: index, - ), - ); - }, - ), - ); - },), + GetBuilder( + builder: (NewsCommentController newsCommentController) { + return Expanded( + child: ListView.builder( + physics: const BouncingScrollPhysics(), + controller: scrollController, + itemCount: 10, + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.all(12), + child: CommentView( + commentModel: newsCommentController + .listComments[index], + postition: index, + ), + ); + }, + ), + ); + }, + ), Padding( padding: EdgeInsets.only( left: 8, diff --git a/app/pubspec.lock b/app/pubspec.lock index a81563021ef7..a1a26a2608a0 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -106,6 +106,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.2" + connectivity_plus: + dependency: "direct main" + description: + name: connectivity_plus + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + connectivity_plus_platform_interface: + dependency: transitive + description: + name: connectivity_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.3" cross_file: dependency: transitive description: @@ -127,6 +141,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.17.1" + dbus: + dependency: transitive + description: + name: dbus + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.4" diffutil_dart: dependency: transitive description: @@ -591,6 +612,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.2" + nm: + dependency: transitive + description: + name: nm + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" numberpicker: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index dc5ba18729cb..50b6ca6a243b 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -73,6 +73,7 @@ dependencies: flutter_mentions: ^2.0.1 flutter_html: ^3.0.0-alpha.5 flutter_icons_null_safety: ^1.1.0 + connectivity_plus: ^3.0.2 dev_dependencies: flutter_test: From de1c8c7eee6defd0a2b20739ec3ed19a7a05ad96 Mon Sep 17 00:00:00 2001 From: Inderjeet Kaur Date: Tue, 22 Nov 2022 19:04:23 +0530 Subject: [PATCH 2/8] Switch back to old UI for now --- app/lib/widgets/CrossSigning.dart | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/app/lib/widgets/CrossSigning.dart b/app/lib/widgets/CrossSigning.dart index 122c0ba21140..ec56d496ef13 100644 --- a/app/lib/widgets/CrossSigning.dart +++ b/app/lib/widgets/CrossSigning.dart @@ -56,7 +56,7 @@ class CrossSigning { if (!_shouldShowNewDevicePopup()) { return; } - /*Get.generalDialog( + Get.generalDialog( pageBuilder: (context, anim1, anim2) { return Container( width: MediaQuery.of(context).size.width, @@ -77,13 +77,6 @@ class CrossSigning { ), ); }, - );*/ - Get.defaultDialog( - title: 'New DeviceDetected', - onConfirm: () async { - await event.requestVerificationToUser(); - Get.back(); - }, ); }); } From 5ebe61e588a61d32fcbdc31234daf350619b4e2a Mon Sep 17 00:00:00 2001 From: Inderjeet Kaur Date: Fri, 25 Nov 2022 10:37:13 +0530 Subject: [PATCH 3/8] Extract no internet widget and make it reusable --- .../screens/HomeScreens/chat/ChatScreen.dart | 19 +-- .../screens/HomeScreens/chat/Overview.dart | 149 ++++++++++-------- app/lib/screens/HomeScreens/faq/Overview.dart | 19 +-- app/lib/screens/HomeScreens/news/News.dart | 19 +-- app/lib/screens/SideMenuScreens/ToDo.dart | 19 +-- app/lib/widgets/NoInternet.dart | 22 +++ 6 files changed, 110 insertions(+), 137 deletions(-) create mode 100644 app/lib/widgets/NoInternet.dart diff --git a/app/lib/screens/HomeScreens/chat/ChatScreen.dart b/app/lib/screens/HomeScreens/chat/ChatScreen.dart index b712df3a0b5c..b5ee40daff6e 100644 --- a/app/lib/screens/HomeScreens/chat/ChatScreen.dart +++ b/app/lib/screens/HomeScreens/chat/ChatScreen.dart @@ -16,6 +16,7 @@ import 'package:effektio/widgets/CustomAvatar.dart'; import 'package:effektio/widgets/CustomChatInput.dart'; import 'package:effektio/widgets/EmojiReactionListItem.dart'; import 'package:effektio/widgets/EmptyHistoryPlaceholder.dart'; +import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio/widgets/TypeIndicator.dart'; import 'package:effektio/widgets/emoji_row.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart' @@ -267,23 +268,7 @@ class _ChatScreenState extends State () => SafeArea( bottom: false, child: networkController.connectionType.value == '0' - ? Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - 'assets/images/no_internet.png', - scale: 5, - ), - const Text( - 'No internet\nPlease turn on internet to process', - style: SideMenuAndProfileTheme.profileMenuStyle, - textAlign: TextAlign.center, - ), - ], - ), - ) + ? noInternetWidget() : buildBody(context), ), ), diff --git a/app/lib/screens/HomeScreens/chat/Overview.dart b/app/lib/screens/HomeScreens/chat/Overview.dart index 6b1f9c01f688..fc7a29d4d907 100644 --- a/app/lib/screens/HomeScreens/chat/Overview.dart +++ b/app/lib/screens/HomeScreens/chat/Overview.dart @@ -2,9 +2,11 @@ import 'dart:ui'; import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/chat_list_controller.dart'; +import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/widgets/AppCommon.dart'; import 'package:effektio/widgets/ChatListItem.dart'; import 'package:effektio/widgets/InviteInfoWidget.dart'; +import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart' show Client, Invitation; import 'package:flutter/material.dart'; @@ -25,78 +27,87 @@ class ChatOverview extends StatefulWidget { } class _ChatOverviewState extends State { + final networkController = Get.put(NetworkController()); + @override Widget build(BuildContext context) { - return Scaffold( - body: CustomScrollView( - physics: const BouncingScrollPhysics(), - slivers: [ - SliverAppBar( - pinned: false, - snap: false, - floating: true, - leading: TextButton( - onPressed: () {}, - child: Container( - margin: const EdgeInsets.only(right: 15), - child: Text( - AppLocalizations.of(context)!.chat, - style: AppCommonTheme.appBarTitleStyle, - ), - ), - ), - leadingWidth: 100, - actions: [ - IconButton( - onPressed: () { - showNotYetImplementedMsg( - context, - 'Chat Search is not implemented yet', - ); - }, - padding: const EdgeInsets.only(right: 10, left: 5), - icon: const Icon( - FlutterIcons.search1_ant, - color: AppCommonTheme.svgIconColor, - ), - ), - IconButton( - onPressed: () { - showNotYetImplementedMsg( - context, - 'Multiselect is not implemented yet', - ); - }, - padding: const EdgeInsets.only(right: 10, left: 5), - icon: const Icon( - FlutterIcons.select_mco, - color: AppCommonTheme.svgIconColor, - ), - ), - IconButton( - onPressed: () { - showNotYetImplementedMsg( - context, - 'Starting a new chat is not implemented yet', - ); - }, - padding: const EdgeInsets.only(right: 10, left: 10), - icon: const Icon( - FlutterIcons.md_add_ion, - color: AppCommonTheme.svgIconColor, - ), + return Obx( + () => Scaffold( + body: networkController.connectionType.value == '0' + ? noInternetWidget() + : CustomScrollView( + physics: const BouncingScrollPhysics(), + slivers: [ + SliverAppBar( + pinned: false, + snap: false, + floating: true, + leading: TextButton( + onPressed: () {}, + child: Container( + margin: const EdgeInsets.only(right: 15), + child: Text( + AppLocalizations.of(context)!.chat, + style: AppCommonTheme.appBarTitleStyle, + ), + ), + ), + leadingWidth: 100, + actions: [ + IconButton( + onPressed: () { + showNotYetImplementedMsg( + context, + 'Chat Search is not implemented yet', + ); + }, + padding: const EdgeInsets.only(right: 10, left: 5), + icon: const Icon( + FlutterIcons.search1_ant, + color: AppCommonTheme.svgIconColor, + ), + ), + IconButton( + onPressed: () { + showNotYetImplementedMsg( + context, + 'Multiselect is not implemented yet', + ); + }, + padding: const EdgeInsets.only(right: 10, left: 5), + icon: const Icon( + FlutterIcons.select_mco, + color: AppCommonTheme.svgIconColor, + ), + ), + IconButton( + onPressed: () { + showNotYetImplementedMsg( + context, + 'Starting a new chat is not implemented yet', + ); + }, + padding: const EdgeInsets.only(right: 10, left: 10), + icon: const Icon( + FlutterIcons.md_add_ion, + color: AppCommonTheme.svgIconColor, + ), + ), + ], + ), + SliverToBoxAdapter( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + if (widget.client.isGuest()) + empty + else + buildList(context), + ], + ), + ), + ], ), - ], - ), - SliverToBoxAdapter( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - if (widget.client.isGuest()) empty else buildList(context), - ], - ), - ), - ], ), ); } diff --git a/app/lib/screens/HomeScreens/faq/Overview.dart b/app/lib/screens/HomeScreens/faq/Overview.dart index 10b755893d30..b5075fd4e16e 100644 --- a/app/lib/screens/HomeScreens/faq/Overview.dart +++ b/app/lib/screens/HomeScreens/faq/Overview.dart @@ -2,6 +2,7 @@ import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/FaqController.dart'; import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/widgets/FaqListItem.dart'; +import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -26,23 +27,7 @@ class _FaqOverviewScreenState extends State { return Obx( () => Container( child: networkController.connectionType.value == '0' - ? Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - 'assets/images/no_internet.png', - scale: 5, - ), - const Text( - 'No internet\nPlease turn on internet to process', - style: SideMenuAndProfileTheme.profileMenuStyle, - textAlign: TextAlign.center, - ), - ], - ), - ) + ? noInternetWidget() : (!snapshot.hasData) ? Container( height: MediaQuery.of(context).size.height, diff --git a/app/lib/screens/HomeScreens/news/News.dart b/app/lib/screens/HomeScreens/news/News.dart index d28ea0cbe881..7299fec1f5d1 100644 --- a/app/lib/screens/HomeScreens/news/News.dart +++ b/app/lib/screens/HomeScreens/news/News.dart @@ -2,6 +2,7 @@ import 'package:effektio/common/animations/LikeAnimation.dart'; import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/widgets/NewsItem.dart'; +import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio/widgets/SideMenu.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart'; import 'package:flutter/material.dart'; @@ -46,23 +47,7 @@ class _NewsScreenState extends State return Obx( () => Container( child: networkController.connectionType.value == '0' - ? Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - 'assets/images/no_internet.png', - scale: 5, - ), - const Text( - 'No internet\nPlease turn on internet to process', - style: SideMenuAndProfileTheme.profileMenuStyle, - textAlign: TextAlign.center, - ), - ], - ), - ) + ? noInternetWidget() : (!snapshot.hasData) ? SizedBox( height: MediaQuery.of(context).size.height, diff --git a/app/lib/screens/SideMenuScreens/ToDo.dart b/app/lib/screens/SideMenuScreens/ToDo.dart index 837e0042df19..b1a780f1c5ad 100644 --- a/app/lib/screens/SideMenuScreens/ToDo.dart +++ b/app/lib/screens/SideMenuScreens/ToDo.dart @@ -3,6 +3,7 @@ import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/controllers/todo_controller.dart'; import 'package:effektio/widgets/AppCommon.dart'; +import 'package:effektio/widgets/NoInternet.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -37,23 +38,7 @@ class _ToDoScreenState extends State { return Obx( () => Container( child: networkController.connectionType.value == '0' - ? Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - 'assets/images/no_internet.png', - scale: 5, - ), - const Text( - 'No internet\nPlease turn on internet to process', - style: SideMenuAndProfileTheme.profileMenuStyle, - textAlign: TextAlign.center, - ), - ], - ), - ) + ? noInternetWidget() : Scaffold( extendBodyBehindAppBar: true, floatingActionButtonLocation: diff --git a/app/lib/widgets/NoInternet.dart b/app/lib/widgets/NoInternet.dart new file mode 100644 index 000000000000..a62973dcc715 --- /dev/null +++ b/app/lib/widgets/NoInternet.dart @@ -0,0 +1,22 @@ +import 'package:effektio/common/store/themes/SeperatedThemes.dart'; +import 'package:flutter/material.dart'; + +Widget noInternetWidget() { + return Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/no_internet.png', + scale: 5, + ), + const Text( + 'No internet\nPlease turn on internet to process', + style: SideMenuAndProfileTheme.profileMenuStyle, + textAlign: TextAlign.center, + ), + ], + ), + ); +} From dcd583d2beb01b57147fa7bdedc8542cd1cdded6 Mon Sep 17 00:00:00 2001 From: Talha Gondal Date: Fri, 25 Nov 2022 19:15:13 +0500 Subject: [PATCH 4/8] move NoInternetWidget to AppCommon.dart --- .../screens/HomeScreens/chat/ChatScreen.dart | 1 - .../screens/HomeScreens/chat/Overview.dart | 1 - app/lib/screens/HomeScreens/faq/Overview.dart | 205 +++++++++--------- app/lib/screens/HomeScreens/news/News.dart | 5 +- app/lib/screens/SideMenuScreens/ToDo.dart | 5 +- app/lib/widgets/AppCommon.dart | 20 ++ app/lib/widgets/NoInternet.dart | 22 -- 7 files changed, 132 insertions(+), 127 deletions(-) delete mode 100644 app/lib/widgets/NoInternet.dart diff --git a/app/lib/screens/HomeScreens/chat/ChatScreen.dart b/app/lib/screens/HomeScreens/chat/ChatScreen.dart index 4369b74a5c6b..98949be99973 100644 --- a/app/lib/screens/HomeScreens/chat/ChatScreen.dart +++ b/app/lib/screens/HomeScreens/chat/ChatScreen.dart @@ -13,7 +13,6 @@ import 'package:effektio/widgets/ChatBubbleBuilder.dart'; import 'package:effektio/widgets/CustomAvatar.dart'; import 'package:effektio/widgets/CustomChatInput.dart'; import 'package:effektio/widgets/EmptyHistoryPlaceholder.dart'; -import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio/widgets/TypeIndicator.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart' show Client, Conversation, FfiBufferUint8; diff --git a/app/lib/screens/HomeScreens/chat/Overview.dart b/app/lib/screens/HomeScreens/chat/Overview.dart index fc7a29d4d907..0bdf2fbeeaa4 100644 --- a/app/lib/screens/HomeScreens/chat/Overview.dart +++ b/app/lib/screens/HomeScreens/chat/Overview.dart @@ -6,7 +6,6 @@ import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/widgets/AppCommon.dart'; import 'package:effektio/widgets/ChatListItem.dart'; import 'package:effektio/widgets/InviteInfoWidget.dart'; -import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart' show Client, Invitation; import 'package:flutter/material.dart'; diff --git a/app/lib/screens/HomeScreens/faq/Overview.dart b/app/lib/screens/HomeScreens/faq/Overview.dart index b5075fd4e16e..435287407077 100644 --- a/app/lib/screens/HomeScreens/faq/Overview.dart +++ b/app/lib/screens/HomeScreens/faq/Overview.dart @@ -1,8 +1,8 @@ import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/FaqController.dart'; import 'package:effektio/controllers/network_controller.dart'; +import 'package:effektio/widgets/AppCommon.dart'; import 'package:effektio/widgets/FaqListItem.dart'; -import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -26,119 +26,126 @@ class _FaqOverviewScreenState extends State { builder: (BuildContext context, AsyncSnapshot snapshot) { return Obx( () => Container( - child: networkController.connectionType.value == '0' - ? noInternetWidget() - : (!snapshot.hasData) - ? Container( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - color: AppCommonTheme.backgroundColor, - child: const Center( - child: SizedBox( - height: 50, - width: 50, - child: CircularProgressIndicator( - color: AppCommonTheme.primaryColor, - ), + child: networkController.connectionType.value == '0' + ? noInternetWidget() + : (!snapshot.hasData) + ? Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + color: AppCommonTheme.backgroundColor, + child: const Center( + child: SizedBox( + height: 50, + width: 50, + child: CircularProgressIndicator( + color: AppCommonTheme.primaryColor, ), ), - ) - : Scaffold( - body: Container( - decoration: PinsTheme.pinsDecoration, - child: Padding( - padding: const EdgeInsets.only(top: 25), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Padding( - padding: EdgeInsets.only(left: 12), - child: Text('Pins', - style: PinsTheme.titleTextStyle), + ), + ) + : Scaffold( + body: Container( + decoration: PinsTheme.pinsDecoration, + child: Padding( + padding: const EdgeInsets.only(top: 25), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Padding( + padding: EdgeInsets.only(left: 12), + child: Text( + 'Pins', + style: PinsTheme.titleTextStyle, ), - Padding( - padding: const EdgeInsets.only( - top: 5, - bottom: 6, - left: 10, - right: 10, + ), + Padding( + padding: const EdgeInsets.only( + top: 5, + bottom: 6, + left: 10, + right: 10, + ), + child: TextField( + onChanged: (value) { + faqController.searchedData( + value, + snapshot, + ); + }, + controller: faqController.searchController, + style: + ToDoTheme.taskTitleTextStyle.copyWith( + fontWeight: FontWeight.w500, ), - child: TextField( - onChanged: (value) { - faqController.searchedData( - value, snapshot); - }, - controller: - faqController.searchController, - style: - ToDoTheme.taskTitleTextStyle.copyWith( - fontWeight: FontWeight.w500, + cursorColor: ToDoTheme.primaryTextColor, + decoration: InputDecoration( + hintStyle: const TextStyle( + color: Colors.white, + fontSize: 13, + ), + suffixIcon: const Icon( + Icons.search, + color: Colors.white, ), - cursorColor: ToDoTheme.primaryTextColor, - decoration: InputDecoration( - hintStyle: const TextStyle( + contentPadding: const EdgeInsets.only( + left: 12, + bottom: 2, + top: 2, + ), + border: OutlineInputBorder( + borderSide: const BorderSide( color: Colors.white, - fontSize: 13, ), - suffixIcon: const Icon( - Icons.search, + borderRadius: + BorderRadius.circular(20.0), + ), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( color: Colors.white, ), - contentPadding: const EdgeInsets.only( - left: 12, - bottom: 2, - top: 2, - ), - border: OutlineInputBorder( - borderSide: const BorderSide( - color: Colors.white), - borderRadius: - BorderRadius.circular(20.0), - ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide( - color: Colors.white), - borderRadius: - BorderRadius.circular(30.0), - ), - enabledBorder: OutlineInputBorder( - borderSide: const BorderSide( - color: Colors.white), - borderRadius: - BorderRadius.circular(30.0), + borderRadius: + BorderRadius.circular(30.0), + ), + enabledBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: Colors.white, ), + borderRadius: + BorderRadius.circular(30.0), ), ), ), - GetBuilder( - builder: (FaqController controller) { - return Expanded( - child: ListView.builder( - padding: const EdgeInsets.all(8), - shrinkWrap: true, - itemCount: controller - .searchData.isEmpty - ? snapshot.requireData.length - : controller.searchData.length, - itemBuilder: (BuildContext context, - int index) { - return FaqListItem( - client: widget.client, - faq: controller.searchData.isEmpty - ? snapshot.requireData[index] - : controller - .searchData[index], - ); - }, - ), - ); - }, - ), - ], - ), + ), + GetBuilder( + builder: (FaqController controller) { + return Expanded( + child: ListView.builder( + padding: const EdgeInsets.all(8), + shrinkWrap: true, + itemCount: controller.searchData.isEmpty + ? snapshot.requireData.length + : controller.searchData.length, + itemBuilder: ( + BuildContext context, + int index, + ) { + return FaqListItem( + client: widget.client, + faq: controller.searchData.isEmpty + ? snapshot.requireData[index] + : controller.searchData[index], + ); + }, + ), + ); + }, + ), + ], ), ), - )), + ), + ), + ), ); }, ); diff --git a/app/lib/screens/HomeScreens/news/News.dart b/app/lib/screens/HomeScreens/news/News.dart index 7299fec1f5d1..efd2bde87a0b 100644 --- a/app/lib/screens/HomeScreens/news/News.dart +++ b/app/lib/screens/HomeScreens/news/News.dart @@ -1,8 +1,8 @@ import 'package:effektio/common/animations/LikeAnimation.dart'; import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/network_controller.dart'; +import 'package:effektio/widgets/AppCommon.dart'; import 'package:effektio/widgets/NewsItem.dart'; -import 'package:effektio/widgets/NoInternet.dart'; import 'package:effektio/widgets/SideMenu.dart'; import 'package:effektio_flutter_sdk/effektio_flutter_sdk_ffi.dart'; import 'package:flutter/material.dart'; @@ -79,7 +79,8 @@ class _NewsScreenState extends State backgroundColor: AppCommonTheme.primaryColor, child: Image.asset( - 'assets/images/hamburger.png'), + 'assets/images/hamburger.png', + ), ), ), onPressed: () { diff --git a/app/lib/screens/SideMenuScreens/ToDo.dart b/app/lib/screens/SideMenuScreens/ToDo.dart index b1a780f1c5ad..c7f5971dfc73 100644 --- a/app/lib/screens/SideMenuScreens/ToDo.dart +++ b/app/lib/screens/SideMenuScreens/ToDo.dart @@ -3,7 +3,6 @@ import 'package:effektio/common/store/themes/SeperatedThemes.dart'; import 'package:effektio/controllers/network_controller.dart'; import 'package:effektio/controllers/todo_controller.dart'; import 'package:effektio/widgets/AppCommon.dart'; -import 'package:effektio/widgets/NoInternet.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -81,7 +80,9 @@ class _ToDoScreenState extends State { children: List.generate(buttonText.length, (int index) { return radioButton( - text: buttonText[index], index: index); + text: buttonText[index], + index: index, + ); }), ), ), diff --git a/app/lib/widgets/AppCommon.dart b/app/lib/widgets/AppCommon.dart index 1e106d75b0b5..3b95258b99ee 100644 --- a/app/lib/widgets/AppCommon.dart +++ b/app/lib/widgets/AppCommon.dart @@ -67,6 +67,26 @@ Widget elevatedButton( ); } +Widget noInternetWidget() { + return Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/no_internet.png', + scale: 5, + ), + const Text( + 'No internet\nPlease turn on internet to process', + style: SideMenuAndProfileTheme.profileMenuStyle, + textAlign: TextAlign.center, + ), + ], + ), + ); +} + int hexOfRGBA(int r, int g, int b, {double opacity = 1}) { r = (r < 0) ? -r : r; g = (g < 0) ? -g : g; diff --git a/app/lib/widgets/NoInternet.dart b/app/lib/widgets/NoInternet.dart deleted file mode 100644 index a62973dcc715..000000000000 --- a/app/lib/widgets/NoInternet.dart +++ /dev/null @@ -1,22 +0,0 @@ -import 'package:effektio/common/store/themes/SeperatedThemes.dart'; -import 'package:flutter/material.dart'; - -Widget noInternetWidget() { - return Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - 'assets/images/no_internet.png', - scale: 5, - ), - const Text( - 'No internet\nPlease turn on internet to process', - style: SideMenuAndProfileTheme.profileMenuStyle, - textAlign: TextAlign.center, - ), - ], - ), - ); -} From 04a76f45db07612dbd3d83fc523d9b24efa79f64 Mon Sep 17 00:00:00 2001 From: Talha Gondal Date: Fri, 25 Nov 2022 20:55:24 +0500 Subject: [PATCH 5/8] supply cache size to assetImage --- app/lib/widgets/AppCommon.dart | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/lib/widgets/AppCommon.dart b/app/lib/widgets/AppCommon.dart index 3b95258b99ee..a27874c06642 100644 --- a/app/lib/widgets/AppCommon.dart +++ b/app/lib/widgets/AppCommon.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:io' show Platform; import 'dart:math'; import 'package:effektio/common/store/themes/SeperatedThemes.dart'; @@ -68,14 +69,25 @@ Widget elevatedButton( } Widget noInternetWidget() { + Size screenSize = WidgetsBinding.instance.window.physicalSize; + bool isDesktop = Platform.isWindows || Platform.isMacOS || Platform.isLinux; + double width = screenSize.width; + double height = screenSize.height; return Center( child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, children: [ - Image.asset( - 'assets/images/no_internet.png', - scale: 5, + Flexible( + child: Image.asset( + 'assets/images/no_internet.png', + cacheHeight: + isDesktop ? (height * 0.25).toInt() : (height * 0.10).toInt(), + cacheWidth: + isDesktop ? (width * 0.15).toInt() : (height * 0.10).toInt(), + filterQuality: FilterQuality.high, + ), ), const Text( 'No internet\nPlease turn on internet to process', From c3653c14869fbf807268e4e06bcecc0621e8fb81 Mon Sep 17 00:00:00 2001 From: Talha Gondal <68579938+gtalha07@users.noreply.github.com> Date: Fri, 25 Nov 2022 21:03:19 +0500 Subject: [PATCH 6/8] use debugPrint call --- app/lib/controllers/network_controller.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/controllers/network_controller.dart b/app/lib/controllers/network_controller.dart index 1be848bbc030..a50582637638 100644 --- a/app/lib/controllers/network_controller.dart +++ b/app/lib/controllers/network_controller.dart @@ -24,7 +24,7 @@ class NetworkController extends GetxController { try { connectivityResult = await (_connectivity.checkConnectivity()); } on PlatformException catch (e) { - print(e); + debugPrint(e); } return _updateState(connectivityResult!); } From dc62ef309263405fb3de90ee0cf8cbb7f699a160 Mon Sep 17 00:00:00 2001 From: Talha Gondal <68579938+gtalha07@users.noreply.github.com> Date: Fri, 25 Nov 2022 21:38:39 +0500 Subject: [PATCH 7/8] add missing import --- app/lib/controllers/network_controller.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/app/lib/controllers/network_controller.dart b/app/lib/controllers/network_controller.dart index a50582637638..98e8ac2086cb 100644 --- a/app/lib/controllers/network_controller.dart +++ b/app/lib/controllers/network_controller.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; class NetworkController extends GetxController { From 71f491c74f0bda09d1b3d4f91d786126914c998c Mon Sep 17 00:00:00 2001 From: Talha Gondal <68579938+gtalha07@users.noreply.github.com> Date: Fri, 25 Nov 2022 21:42:54 +0500 Subject: [PATCH 8/8] convert exception to string --- app/lib/controllers/network_controller.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/controllers/network_controller.dart b/app/lib/controllers/network_controller.dart index 98e8ac2086cb..b9df5ad91457 100644 --- a/app/lib/controllers/network_controller.dart +++ b/app/lib/controllers/network_controller.dart @@ -25,7 +25,7 @@ class NetworkController extends GetxController { try { connectivityResult = await (_connectivity.checkConnectivity()); } on PlatformException catch (e) { - debugPrint(e); + debugPrint(e.toString()); } return _updateState(connectivityResult!); }