Skip to content

Commit 1b02b67

Browse files
committed
tap-to-open task details page upon tapping on task of listview on home widget
1 parent 6ea2bb6 commit 1b02b67

File tree

4 files changed

+72
-35
lines changed

4 files changed

+72
-35
lines changed

android/app/src/main/kotlin/com/example/taskwarrior/TaskWarriorWidgetProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class TaskWarriorWidgetProvider : AppWidgetProvider() {
3838
flags = Intent. FLAG_ACTIVITY_NEW_TASK
3939
context?.startActivity(this)
4040
}
41-
HomeWidgetLaunchIntent.getActivity(context, MainActivity::class.java, Uri.parse("TaskWarrior://taskView?taskId=$uuid"))
41+
// HomeWidgetLaunchIntent.getActivity(context, MainActivity::class.java, Uri.parse("TaskWarrior://taskView?taskId=$uuid"))
4242
}
4343
}
4444
super.onReceive(context, intent)

android/app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<string name="text_data_key">textData</string>
77
<string name="image_data_key">imageData</string>
88
<string name="app_widget_launch_action">es.antonborri.home_widget.action.LAUNCH</string>
9-
<string name="app_widget_card_clicked_uri">TaskWarriorAppWidget://cardClicked</string>
9+
<string name="app_widget_card_clicked_uri">taskwarriorappwidget://cardclicked</string>
1010
<string name="my_widget_description">This widget shows pending tasks from TaskWarrior app</string>
1111
<string name="appwidget_text">TaskWarrior</string>
1212
<string name="add_widget">Add widget</string>

lib/main.dart

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import 'package:loggy/loggy.dart';
1111
import 'package:path_provider/path_provider.dart';
1212
import 'package:permission_handler/permission_handler.dart';
1313
import 'package:sizer/sizer.dart';
14+
import 'package:taskwarrior/config/app_settings.dart';
1415
import 'package:taskwarrior/controller/WidgetController.dart';
1516
import 'package:taskwarrior/controller/onboarding_controller.dart';
1617
import 'package:taskwarrior/routes/pageroute.dart';
18+
import 'package:taskwarrior/services/task_details.dart';
1719
import 'package:taskwarrior/views/Onboarding/onboarding_screen.dart';
1820
import 'package:taskwarrior/views/profile/profile.dart';
1921
import 'package:taskwarrior/widgets/app_placeholder.dart';
@@ -48,35 +50,19 @@ Future main([List<String> args = const []]) async {
4850
'${testingDirectory.path}/profiles/acae0462-6a34-11e4-8001-002590720087',
4951
).createSync(recursive: true);
5052
}
51-
SystemChrome.setPreferredOrientations([
52-
DeviceOrientation.portraitUp,
53-
DeviceOrientation.portraitDown
54-
]).then((value) =>
55-
runApp(
56-
FutureBuilder<Directory>(
57-
future: getApplicationDocumentsDirectory(),
58-
builder: (context, snapshot) => (snapshot.hasData)
59-
? ProfilesWidget(
60-
baseDirectory: testingDirectory ?? snapshot.data!,
61-
child: const MyApp(),
62-
)
63-
: const AppSetupPlaceholder(),
64-
),
65-
));
66-
HomeWidget.widgetClicked.listen((uri) async{
67-
if (uri != null) {
68-
debugPrint("i am here and uri is $uri");
69-
String? uuid = uri.queryParameters["uuid"];
70-
debugPrint('uuid is $uuid');
71-
if (uuid!=null) {
72-
// Future.delayed(Duration(seconds: 5)).then((value) => Navigator.push(context, MaterialPageRoute(builder: (context) => DetailRoute(uuid),)));
73-
}
74-
}
75-
if (uri?.host == "cardClicked") {
76-
final taskUUID = uri!.queryParameters["uuid"];
77-
debugPrint(taskUUID);
78-
}
79-
});
53+
SystemChrome.setPreferredOrientations(
54+
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown])
55+
.then((value) => runApp(
56+
FutureBuilder<Directory>(
57+
future: getApplicationDocumentsDirectory(),
58+
builder: (context, snapshot) => (snapshot.hasData)
59+
? ProfilesWidget(
60+
baseDirectory: testingDirectory ?? snapshot.data!,
61+
child: const MyApp(),
62+
)
63+
: const AppSetupPlaceholder(),
64+
),
65+
));
8066
}
8167

8268
Future init() async {
@@ -102,13 +88,33 @@ class _MyAppState extends State<MyApp> {
10288
Directory? baseDirectory;
10389
List<Task> allData = [];
10490
bool stopTraver = false;
91+
92+
bool isHomeWidgetTaskTapped = false;
93+
late String uuid;
10594
@override
10695
void initState() {
10796
super.initState();
10897

10998
///sort the data by daily burn down
11099
111100
notificationService.initiliazeNotification();
101+
helperFunction();
102+
}
103+
104+
void helperFunction() async {
105+
Uri? myUri = await HomeWidget.initiallyLaunchedFromHomeWidget();
106+
if (myUri != null) {
107+
if (myUri.host == "cardclicked") {
108+
if (myUri.queryParameters["uuid"] != null) {
109+
uuid = myUri.queryParameters["uuid"] as String;
110+
setState(() {
111+
isHomeWidgetTaskTapped = true;
112+
});
113+
// print('is tapped is $isHomeWidgetTaskTapped');
114+
}
115+
// debugPrint('uuid is $uuid');
116+
}
117+
}
112118
}
113119

114120
@override
@@ -143,7 +149,17 @@ class _MyAppState extends State<MyApp> {
143149
PageRoutes.profile: (context) => const ProfilePage(),
144150
},
145151

146-
home: CheckOnboardingStatus(),
152+
home: isHomeWidgetTaskTapped == false
153+
? CheckOnboardingStatus()
154+
: FutureBuilder(future: Future.delayed(const Duration(seconds: 2)), builder: (context, snapshot) {
155+
if (snapshot.connectionState == ConnectionState.waiting) {
156+
return Scaffold(
157+
backgroundColor:
158+
AppSettings.isDarkMode ? Palette.kToDark.shade200 : Colors.white,
159+
body: const Center(child: CircularProgressIndicator()));
160+
}
161+
return DetailRoute(uuid);
162+
},),
147163
);
148164
}));
149165
}

lib/views/home/home.dart

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import 'package:flutter/material.dart';
44

55
import 'package:double_back_to_close_app/double_back_to_close_app.dart';
66
import 'package:google_fonts/google_fonts.dart';
7+
import 'package:home_widget/home_widget.dart';
78
import 'package:shared_preferences/shared_preferences.dart';
89

910
import 'package:taskwarrior/config/app_settings.dart';
1011
import 'package:taskwarrior/controller/home_tour_controller.dart';
1112
import 'package:taskwarrior/drawer/filter_drawer.dart';
1213
import 'package:taskwarrior/drawer/nav_drawer.dart';
1314
import 'package:taskwarrior/model/storage/storage_widget.dart';
15+
import 'package:taskwarrior/services/task_details.dart';
1416
import 'package:taskwarrior/taskserver/ntaskserver.dart';
1517
import 'package:taskwarrior/views/home/home_tour.dart';
1618
import 'package:taskwarrior/widgets/add_Task.dart';
@@ -146,9 +148,28 @@ class _HomePageState extends State<HomePage> {
146148
}
147149

148150
bool hideKey = true;
149-
151+
bool isHomeWidgetTaskTapped = false;
152+
late String uuid;
150153
@override
151154
Widget build(BuildContext context) {
155+
156+
HomeWidget.widgetClicked.listen((uri) async{
157+
// print('i am here and uri is $uri');
158+
// print('is tapped is i am being called');
159+
if (uri != null) {
160+
if (uri.host == "cardclicked") {
161+
if (uri.queryParameters["uuid"] != null) {
162+
uuid = uri.queryParameters["uuid"] as String;
163+
setState(() {
164+
isHomeWidgetTaskTapped = true;
165+
});
166+
// print('is tapped is $isHomeWidgetTaskTapped');
167+
}
168+
debugPrint('uuid is $uuid');
169+
}
170+
}
171+
172+
});
152173
Server? server;
153174
Credentials? credentials;
154175

@@ -200,7 +221,7 @@ class _HomePageState extends State<HomePage> {
200221
tagFilters: tagFilters,
201222
);
202223

203-
return Scaffold(
224+
return isHomeWidgetTaskTapped == false ? Scaffold(
204225
appBar: AppBar(
205226
backgroundColor: Palette.kToDark.shade200,
206227
title:
@@ -376,7 +397,7 @@ class _HomePageState extends State<HomePage> {
376397
}),
377398
),
378399
resizeToAvoidBottomInset: false,
379-
);
400+
) : DetailRoute(uuid);
380401
}
381402

382403
refresh() {

0 commit comments

Comments
 (0)