Skip to content

Commit

Permalink
Merge pull request #124 from mario-bermonti:mario-bermonti/issue123
Browse files Browse the repository at this point in the history
Only provide a generic digit span task
  • Loading branch information
mario-bermonti committed May 28, 2024
2 parents 32b84b9 + 13fa6f2 commit e3bef0c
Show file tree
Hide file tree
Showing 25 changed files with 137 additions and 471 deletions.
2 changes: 1 addition & 1 deletion .dart_tool/package_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@
"languageVersion": "2.17"
}
],
"generated": "2024-05-14T17:21:45.015235Z",
"generated": "2024-05-18T17:57:06.248772Z",
"generator": "pub",
"generatorVersion": "3.3.2"
}
98 changes: 74 additions & 24 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,36 +1,38 @@
// ignore_for_file: avoid_print

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:digit_span_tasks/digit_span_tasks.dart';

void main() {
runApp(const MyApp());
runApp(const App());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});
class App extends StatelessWidget {
const App({super.key});

// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'DigitSpanTasks',
home: const MyHomePage(),
home: const HomePage(),
theme: ThemeData(primarySwatch: Colors.grey),
);
}
}

class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
class HomePage extends StatefulWidget {
const HomePage({super.key});

// Simulate participant info
final String participantID = '101';
final String sessionID = '001';

@override
State<MyHomePage> createState() => _MyHomePageState();
State<HomePage> createState() => _HomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
Expand Down Expand Up @@ -70,33 +72,81 @@ class _MyHomePageState extends State<MyHomePage> {
required String participantID,
required String sessionID,
}) async {
UserConfig config = UserConfig(
stimListPractice: ['01', '234'],
stimListExperimental: ['5678', '01567', '987654'],
// Setup variables for task
DigitSpanTask task;
DigitSpanTaskData data;

// Define config for practice session
UserConfig practiceConfig = UserConfig(
stimList: ['12'],
participantID: participantID,
sessionID: sessionID,
sessionType: SessionType.practice,
);
// Setup task
task = DigitSpanTask(config: practiceConfig);
await Get.to(StartPage());
// Run task
data = await task.run();
print(data);

// Define config for experimental session
UserConfig experimentalConfig = UserConfig(
stimList: ['5678', '98765'],
participantID: participantID,
sessionID: sessionID,
sessionType: SessionType.experimental,
);
DigitSpanTaskData data = await Get.to(() => DigitSpanForward(
config: config,
));
// ignore: avoid_print
print('\n\n\nFORWARD data \n $data');
task = DigitSpanTask(config: experimentalConfig);
await Get.to(StartPage());
data = await task.run();
print(data);
}

void runDigitSpanBackwards({
required String participantID,
required String sessionID,
}) async {
UserConfig config = UserConfig(
stimListPractice: ['23', '567'],
stimListExperimental: ['0123', '45678', '901234'],
stimList: ['901234'],
participantID: participantID,
sessionID: sessionID,
sessionType: SessionType.experimental,
);
final task = DigitSpanTask(config: config);
await Get.to(StartPage());
final DigitSpanTaskData data = await task.run();
print(data);
}
}

/// Ask participants if they are ready
class StartPage extends StatelessWidget {
const StartPage({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const SizedBox(height: 25),
ElevatedButton(
onPressed: () async {
Get.back();
},
child: Text(
'Comenzar',
style: Theme.of(context).textTheme.titleLarge,
),
),
],
),
),
);
DigitSpanTaskData data = await Get.to(() => DigitSpanBackwards(
config: config,
));
// ignore: avoid_print
print('\n\n\nBAKWARDS data \n $data');
}
}
2 changes: 1 addition & 1 deletion example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ packages:
path: ".."
relative: true
source: path
version: "0.2.2"
version: "0.3.0"
drift:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions lib/digit_span_tasks.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
library digit_span_tasks;

export 'src/digit_span_forward.dart';
export 'src/digit_span_backwards.dart';
export 'src/digit_span_task/digit_span_task.dart';
export 'src/digit_span_task/components/data/digit_span_task_data.dart';
export 'src/digit_span_task/components/config/user_config.dart';
export 'src/digit_span_task/components/config/session_type.dart';
64 changes: 0 additions & 64 deletions lib/src/digit_span_backwards.dart

This file was deleted.

47 changes: 0 additions & 47 deletions lib/src/digit_span_forward.dart

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
import 'package:digit_span_tasks/src/digit_span_task/components/config/session_type.dart';
import 'package:get/get.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/data/data_manager.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/activity/task_step.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/config/ds_config.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/stim/stim_controller.dart';

/// Controls the task sequence.
/// The task sequence which includes instructions, stim, response, rest, end
/// The task sequence which includes stim, response, rest, end
class ActivityController extends GetxController {
final DataManager _data = Get.find();

/// Provides access and manages the stimuli
late final StimController _stimuli;

/// Identifies the step the task currently is in
Rx<TaskStep> taskStep = TaskStep.instructions.obs;
Rx<TaskStep> taskStep = TaskStep.stim.obs;

final DSConfig _config = Get.find();

Expand All @@ -31,7 +30,7 @@ class ActivityController extends GetxController {
var stim = _stimuli.stim;

if (stim.stimCountRemaining == 0) {
taskStep(TaskStep.completed);
endSession();

/// This check is needed to garantee that DigitSpanTask doesn't
/// get stuck in rest
Expand All @@ -47,15 +46,8 @@ class ActivityController extends GetxController {
}
}

Future<void> endSession() async {
void endSession() {
_data.endTime = DateTime.now();
await reset();
Get.back();
}

/// Resets the important settings so another session can be run.
Future<void> reset() async {
taskStep(TaskStep.instructions);
_config.sessionType = SessionType.practice;
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/data/data_manager.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/end/end_view.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/instructions/instructions_view.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/activity/activity_controller.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/config/ds_config.dart';
import 'package:digit_span_tasks/src/digit_span_task/components/response/response_view.dart';
Expand All @@ -12,8 +10,8 @@ import 'package:digit_span_tasks/src/digit_span_task/components/activity/task_st

/// Present the appropriate screen based on the current step
class ActivityView extends StatelessWidget {
final ActivityController mDigits = Get.find();
final DataManager data = Get.find();
final ActivityController mDigits = Get.find();
final DSConfig _config = Get.find();

ActivityView({super.key});
Expand All @@ -23,16 +21,12 @@ class ActivityView extends StatelessWidget {
data.startTime = DateTime.now();
return Obx(() {
switch (mDigits.taskStep.value) {
case TaskStep.instructions:
return InstructionsView();
case TaskStep.stim:
return StimView();
case TaskStep.response:
return ResponseView();
case TaskStep.rest:
return RestView();
case TaskStep.completed:
return EndView();
}
});
}
Expand Down
2 changes: 1 addition & 1 deletion lib/src/digit_span_task/components/activity/task_step.dart
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
/// Id the current step for the task sequence
enum TaskStep { instructions, stim, response, rest, completed }
enum TaskStep { stim, response, rest }
4 changes: 0 additions & 4 deletions lib/src/digit_span_task/components/config/ds_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,5 @@ import 'package:digit_span_tasks/src/digit_span_task/components/config/user_conf
class DSConfig extends GetxController {
final UserConfig userConfig;

/// Controls whether the practice or experimental should be presented and
/// how to manage the data.
SessionType sessionType = SessionType.practice;

DSConfig({required this.userConfig});
}
Loading

0 comments on commit e3bef0c

Please sign in to comment.