1. Introduction
In recent years, the integration of mobile application development into educational curricula has become increasingly vital. With the pervasive use of mobile devices and the growing demand for digital skills, proficiency in app development is a valuable asset for students entering the workforce. Educational institutions, including the
Association for Computing Machinery (ACM), recognize the importance of incorporating mobile computing topics throughout the computer science curriculum [
1].
The growing interest in leveraging mobile technologies for educational purposes, as noted by Rushby [
2], has led to a surge in mobile learning research productivity. This productivity, explored by Kukulska-Hulme and Traxler [
3], delves into learning potentials and associated critical issues. However, teaching mobile development can present challenges, particularly regarding the diversity of platforms and the complexities involved in setting up development environments. Hsu, Ching, and Snelson [
4] highlighted the importance of elevated research efforts in mobile learning, emphasizing that enhanced conceptual and theoretical guidance is essential for supporting its design and research aspects. The benefits afforded by mobile technologies have prompted instructional technologists and researchers to adopt an educational perspective in developing multimedia applications for mobile devices aimed at enhancing teaching and learning. Within the expanding body of literature, substantial initiatives are in progress to formulate models and frameworks customized for shaping mobile learning experiences and environments [
5].
In this context, the choice of framework and programming environment is crucial. Flutter, a framework developed by Google, paired with the Dart programming language, offers a compelling solution. Flutter provides a unified platform for building applications across multiple devices, including mobile phones, tablets, and desktop computers, using a single codebase. Its “hot reload” feature enables rapid iteration and experimentation, making it well suited for educational purposes. Additionally, Dart offers a modern and efficient language for app development, with robust support for asynchronous programming and reactive patterns. By integrating these technological advancements, educational institutions can effectively harness mobile technologies to enhance learning experiences and environments, aligning with the ongoing research efforts in the field.
While there are alternative frameworks and languages available for mobile development, Flutter and Dart offer unique advantages. Traditional approaches often involve developing separate codebases for different platforms, such as using Java or Kotlin for Android and Swift or Objective-C for iOS. Cross-platform frameworks such as React Native and Xamarin also exist but may introduce additional complexities or limitations. By contrast, Flutter streamlines the development process, enabling students to focus on core concepts without the overhead of platform-specific knowledge or cumbersome setup procedures.
However, setting up the environment can be challenging for newcomers stepping into Flutter application developments due to the multiple steps of installing various dependencies, configuring the development environment, and understanding how to use the Flutter SDK effectively. Additionally, configuring IDEs such as Visual Studio Code or Android Studio, along with the device or emulator setup for testing, demands specific plugin installations, debugging configurations, and device connections. These complexities raise the hurdles to newcomers as they navigate through the intricacies of Flutter developments. Moreover, the setup process often involves installation steps that are susceptible to version conflicts or configuration errors, which may further complicate the initial learning experience.
To support novice students in learning Flutter independently, it is essential to facilitate the setup of its development environment to be as user-friendly and streamlined as possible. By providing simplified instructions and tools that automate the installation of the dependencies and configurations of the environment, students can focus more on learning Flutter itself without becoming stuck in the setup process. This approach ensures that students can quickly start Flutter application developments, empowering them to explore and experiment with confidence. Additionally, understanding the Flutter framework and Dart language usage is pivotal for students in application development, given significant impacts on the development process.
To further simplify the setup process and ensure a consistent development environment across different operating systems, we leverage Docker. Docker is a containerization platform that allows applications to be packaged with their dependencies, ensuring reproducibility and portability. By encapsulating the Flutter development environment within a Docker container, we provide a hassle-free solution for students, eliminating the need for manual configuration and dependency management.
Our proposal aims to address the challenges faced by students when learning Flutter and mobile app development. By providing a streamlined development environment and guided projects, we empower students to focus on learning core concepts and building practical skills. This approach not only facilitates the teaching of mobile development but also fosters creativity and innovation among students as they explore the possibilities of Flutter and Dart.
In this paper, we present a development environment based on Docker that simplifies the setup of Flutter applications. Students can create Flutter apps directly within a containerized environment, accessible through Visual Studio Code (VSCode) on various operating systems, including Windows, Linux, and Mac. Three sample Flutter projects are integrated into the Docker container, providing students with hands-on learning opportunities. By encapsulating the Flutter development environment within a Docker container, we provide a hassle-free solution for students, eliminating the need for manual configuration and dependency management. This contribution is significant as it addresses the challenges faced by novice developers when setting up their development environment, enabling them to focus more on learning core concepts and building practical skills in Flutter and Dart.
For evaluations of the proposal, we requested 24 first-year Master’s students in Okayama University, Japan, who have no experience with Flutter, to install the development environment and modify the three projects in the Docker container in the assignments by following the prepared instructions. Their completed assignments were collected via pCloud, and their feedback was gathered through a Google Form. The results show that all of the students successfully completed the assignments and confirm the efficiency and validity of the proposal.
The rest of this paper is organized as follows:
Section 2 introduces related works in the literature.
Section 3 introduces adopted open-source software.
Section 4 presents the
development environment for
Flutter.
Section 5 shows the three
Flutter projects in the assignments.
Section 6 evaluates the proposal through applications to novice students.
Section 7 concludes this paper with future works.
7. Discussion and Conclusions
This paper presented the Docker-based Flutter development environment with Visual Studio Code and three simple exercise projects for modifying source codes for starting to learn Flutter programming by novice students.
For evaluations, the proposal was assigned to 24 Master’s students of Technical Engineering course at Okayama University, Japan, including the installation. Then, all the students successfully completed the exercises, which confirmed the efficiency and validity of our proposal. Furthermore, for the questionnaire on the usability, the majority of the students provided positive answers indicating moderate to high usability.
Our proposal not only addresses the educational needs of teaching mobile app development but also aligns with the principles of next-generation programming educations. By leveraging Docker to streamline setup processes and promote modern software development practices, we aim to equip students with both technical skills and an understanding of contemporary development tools. Moreover, our approach highlights Flutter’s cutting-edge capabilities for cross-platform app developments, including native-like experiences and rapid iteration with hot reload. By introducing students to Flutter, we equip them with skills crucial to the dynamic software industry.
Our implementation carefully considers course requirements, security considerations, and the diverse operating systems prevalent in next-generation programming education. While our focus has been on practical aspects, we recognize the importance of continuously refining and adapting the environment to evolving educational needs and technological advancements. Furthermore, our approach highlights the versatility of Flutter and Dart in mobile and web app developments, as well as the collaborative learning experiences facilitated by the Docker container environment. By integrating sample projects and guided exercises, we foster collaborative learning environments where students can share insights and collectively enhance their skills.
While our study has made significant strides in addressing the educational challenges of teaching Flutter and Dart, we acknowledge certain limitations. Future research should explore potential challenges faced during the implementation and evaluation, as well as opportunities for further refinement of the learning environment.
In future works, we plan to expand the repertoire of exercises for Flutter mobile applications and introduce an automatic answer-checking feature. We will also distribute the proposal to students in various universities to improve our Docker-based Flutter development environment, making it more effective and user-friendly for programming learners worldwide. Alongside this, we will analyze how our environment compares to traditional teaching methods and explore new ways to incorporate gamification elements to boost student engagement and motivation. These efforts aim to continuously enhance our Docker-based Flutter development environment, ensuring a comprehensive and enjoyable learning experience for programming students globally.