00:00 - Introduction to React Native Course π
- Overview of the course:
- Designed for beginners with over 4 hours of content.
- Covers the basics of mobile app development in 8 chapters.
- Essential tools for setup:
- Visual Studio Code (VS Code): Download based on your OS.
- Git: To manage your code.
- Node.js: Recommended long-term support version.
11:50 - Understanding Dependencies π¦
- Explanation of the package.json:
- Overview of installed packages from the Expo application creation.
- Importance of using the correct version for consistency in learning.
14:24 - Expo Setup π²
- Steps to install Expo App for development:
- Instructions to scan QR codes for Expo Go on Android/iOS.
- Options for using Android Emulator and iOS Simulator.
14:50 - Starting the Application π
- Final command for launching the application:
- Use
npx expo start in the terminal while in the correct project folder.
- Importance of being in the right directory when executing commands.
15:02 - Starting the Project π
- The project has begun, showing a QR code for access.
- Information provided includes the IP address and hostname for application browsing.
15:35 - Using the Expo App π±
- Instructions on scanning the QR code using the Expo app on a mobile device.
- Troubleshooting tips provided if the application fails to load, emphasizing that both devices must be on the same Wi-Fi network.
17:30 - Web Access and Emulation π
- Option to access the application via a browser at localhost:8081.
- Discussed how to use Chrome DevTools to simulate a mobile device view.
21:35 - Making App Changes βοΈ
- Guide on modifying the default applicationβs welcome message from "Welcome" to "Hello World."
- Confirmation of changes visible on both web and mobile versions of the app.
24:50 - Creating a New App π οΈ
- Demonstrated the command to create a new Expo app and the importance of using the default template.
- Overview of the essential tools integrated within the template, including navigation and cross-platform compatibility.
30:04 - Applying Styles in React Native β¨
- Introduces style props in React Native, differentiating from HTML attributes.
- Demonstrates how to apply styles using
styles.container and styles.text.
31:14 - Adding Images to the Project πΌοΈ
- Discusses downloading images from GitHub for use in the project.
- Shows how to add images to the
assets directory within the app.
33:12 - Implementing Image Background ποΈ
- Explains importing and using ImageBackground in the code.
- Details on setting up the source and styles for the background image.
37:06 - Customizing Text for Readability π€
- Introduces background color for text to improve visibility against the image.
- Demonstrates how to apply a semi-transparent black background to enhance text legibility.
39:43 - Modifying Splash and Icon Configurations π±
- Discusses editing the app.json file to change the app's splash screen and icon.
- Describes how to see updates on a mobile device after restarting the Expo server.
45:04 - File Management and TypeScript Options π
- Discussion on the index.jsx file created from TSX.
- Users are informed TypeScript is enabled but optional for this project.
- Steps to move the file outside the tabs directory and adjustments to the TS config file.
47:04 - Application Layout and Navigation Setup π§
- Introduction of header visibility changes and navigation using Link.
- Emphasizes similarities with Next.js links.
- Creation of an explore link and associated styles for better user navigation.
- Replacing plain links with buttons for navigation via Pressable from React Native.
- Instructions on styling the button and alignment adjustments for better UI representation.
54:56 - Structural Changes in Project π
- Introduction of a contact page and modifications to navigate to it.
- Adjustments to the root layout file for improved page management.
- Overview of using Stack to manage the navigation structure effectively.
- Options to hide and customize headers for specific pages.
- Demonstration of header visibility changes on the homepage and the contact page for improved usability.
1:00:11 - Web File Configuration π
- Overview of files: Includes special files like
plus.html.TSX used for static page configuration.
- Not Found File: Discusses
plus.not-found file which displays a custom error message for non-existent screens.
1:02:00 - Group Directory and Layout Creation π
- Group Definitions: Introduces the functionality of creating directories in parentheses to define groups (e.g.,
(coffee)).
- Layout File Setup: Explains the creation of
underscore layout.jsx and the use of slot for passing components.
1:04:55 - Header Visibility and Navigation π
- Header Control: Discusses handling group headers and modifying them to be hidden for better organization.
- Navigation Flow: Demonstrates keeping navigation functionally while removing visible headers.
1:08:00 - Tabs Implementation and Customization π
- Tabs Directory Setup: Details the importance of the
tabs directory for organizing layouts.
- Icon and Color Customization: Discusses changing tab bar colors and icons to match app themes.
1:14:00 - Icon Selection for Tabs π
- Choosing Icons: Reviews how to find and select appropriate icons for the tab bar using resources.
- UI Consistency: Emphasizes the use of visually consistent icons for user navigation and experience.
1:15:14 - Icon Integration π±
- Discusses importing icons for the app from Ionicons.
- Confirms that the tab bar icon component uses the Ionicons library correctly.
1:16:27 - Assignment Reminder π
- Reminds viewers about an assignment to convert the explore page into a contact page.
- Encourages using a theme text component for color scheme consistency.
1:17:26 - Next Lesson Overview π
- Previews the next lesson focusing on lists in React Native.
- Advises to start the application using npx Expo start for real-time updates.
1:19:00 - Layout Adjustments π
- Describes removing the tabs directory to simplify navigation in the app.
- Introduces the appearance module from React Native for handling light/dark themes.
1:29:20 - Using Flat Lists β
- Explains the difference between FlatList and SectionList for handling data.
- Confirms the implementation of FlatList for a coffee menu in the app.
1:30:19 - Setting Up Color Scheme π¨
- Define color scheme using imports.
- Determine theme based on color scheme values (dark/light).
1:31:07 - Creating Styles Function π¨
- Introduce a new function for styles, enhancing style definitions.
- Utilize stylesheet for styles in the application.
1:32:01 - Using Safe Area View π±
- Explain the necessity of using Safe Area View for mobile devices.
- Distinguish between Scroll View for web and Safe Area View for mobile.
1:35:04 - Flat List & Data Import π
- Start integrating Flat List component with required data and props.
- Create constants for menu items and images.
- Outline structure for rendering menu items, including titles, descriptions, and images.
- Establish a fallback to ensure Flat List displays content without errors.
1:45:24 - Styling Content Container π¨
- Adjusted padding values for better layout:
- Bottom: 20
- Horizontal (Left and Right): 12
- Set background color using the theme.
1:46:11 - Adding Separator Component π οΈ
- Defined a separator component to create a visual distinction between items in a list.
- Configured height to 1 with a background color based on theme color scheme (dark or light).
- Created simple header ("Top of List") and footer ("End of List") components for the Flat List.
- Applied center styling to both header and footer for consistent alignment.
1:52:09 - Handling Empty State in List π
- Added list empty component to render a message ("No items") when the data array is empty.
- Demonstrated how to manage display when thereβs no content available.
- Applied styles to menu item texts and images to improve visibility (font sizes/colors).
- Ensured elements align correctly and fit within the specified dimensions for a polished look.
2:00:27 - Styling Updates π¨
- Adjustments made to the menu layout, enhancing overall image presentation.
- Footer text color updated to white for better visibility.
- New button added on the homepage linking to the menu page.
- Button styles adjusted for uniformity with margin and width enhancements.
- Demonstrated successful navigation to the menu page via the new button.
- Confirmed layout meets design expectations across mobile view.
2:05:29 - Contact Us Page Showcase π
- Introduced the contact information page with functionality for direct phone and SMS interaction.
- Emphasized basic design appropriateness for small business needs.
2:11:17 - Student Challenge Overview π
- Presented a CRUD app as a challenge, focusing on create, read, update, and delete functionalities in a to-do application.
- Encouraged learners to use prior knowledge of React and React Native for implementation.
2:15:31 - To-Do List Setup π
- Initial Setup: Introduction of a to-do list in a CRUD application.
- Data Import: Data imported from a specified source and set to state.
2:18:55 - Adding New To-Dos β
- Function Implementation: Explained how to add a new to-do using an ID generator and state management.
- Text Management: Input text is cleared after adding a new to-do.
2:19:54 - CRUD Functions Overview π
- Reading: Implemented reading functionality using a flat list.
- Updating: Showed how to toggle the completion status of a to-do using a mapping function.
2:21:11 - Removing To-Dos β
- Filter Logic: Mechanism to remove a to-do based on its ID using a filter function is explained.
2:28:40 - Styling and Final Touches π¨
- Style Implementation: Discussed applying styles for better layout visibility and user interaction.
- Adjustments: Ensured the header was hidden and adjusted the input box styling for a cleaner UI.
- Adjusted input styling:
- Border width and color set.
- Padding and margin defined.
- Font size increased for readability.
- Set min-width to allow shrinking on mobile devices.
- Button styles applied:
- Background color changed to white.
- Font styles set for the button text.
2:32:25 - Adding Flat List to App π
- Started implementing Flat List for to-dos:
- Imported Flat List component.
- Data bound to to-do state.
- Set up
keyExtractor based on to-do ID.
2:34:50 - Defining Render Item Logic π¦
- Created
render item function for the Flat List:
- Each item encapsulated in a View component.
- Included text and a delete button (from Material Community Icons).
- Styled according to completion status.
2:40:01 - Completing App Styles ποΈ
- Finalized styles applied to all components:
- Set display properties for to-do items.
- Aligned items in a row with spacing.
- Added text decoration for completed tasks.
2:42:34 - CRUD Operations and Next Steps βοΈ
- Verified that all CRUD operations function correctly:
- Adding, editing, and deleting to-dos worked as expected.
- Mentioned future lessons on enhancing the app with custom fonts and dynamic routing.
- Provided details on running the Expo app on mobile devices.
2:45:43 - Font Import and Initial Setup π¨
- The setup begins with importing the Enter 500 Medium font using
useFonts.
- Check for loaded and error states immediately after importing.
2:48:09 - Applying Font Styles βοΈ
- The font is applied to the input text and to-do text in styles.
- A terminal command is introduced for restarting the project with cache clearing.
2:50:35 - Theme Creation π
- Focus shifts to creating a light and dark theme in the colors.ts file.
- New color definitions are added, emphasizing the simplicity in light and dark themes.
2:54:32 - Theme Context Setup π
- A new context directory is created for building a theme context.
- The theme provider is set to wrap components, enabling theme access through context.
2:59:42 - Theme Toggle Functionality βοΈ
- Includes a toggle button to switch between light and dark modes.
- The button's action checks current theme state and switches accordingly.
3:00:49 - Setting Up Theme Colors and Styles π¨
- Set color to the defined theme and text from context.
- Initialize 'selectable' to avoid browser warnings.
- Introduce a function to create styles for dynamic theming, updating background and button colors based on theme.
3:04:10 - Implementing Toggle Theme Functionality π
- Test the toggle button functionality for dark and light modes.
- Verify changes in the browser, ensuring both modes function seamlessly.
3:06:25 - Adding Animations to To-Do List π
- Integrate animations using React Native Reanimated for smoother transitions.
- Adjust components to utilize animated FlatList for improved UI responsiveness.
3:09:37 - Introducing Local Data Storage ποΈ
- Install Async Storage to maintain to-do data persistently between sessions.
- Set up method to fetch stored to-dos on app load and sort them for organization.
3:14:55 - Saving To-Do Data to Storage πΎ
- Establish a useEffect to handle saving the latest to-do states.
- Ensure that data persists and correctly displays even after application reloads.
3:16:00 - Asynchronous Data Handling π
- Introduction of async function to handle storing JSON data.
- Utilize JSON.stringify to convert to-dos and store using async storage.
3:17:14 - Application Testing π±
- Restart the app using
npx Expo start to ensure updates are applied.
- Validation of app functionality on both web and mobile platforms.
3:19:12 - Status Bar Implementation π
- Address the status bar visibility issues between light and dark modes.
- Implement
StatusBar from Expo to better manage the interface appearance.
3:22:11 - Dynamic Routing Introduction π¦
- Discuss the upcoming feature of dynamic routing for individual to-do items.
- Preparation to set up routing to allow editing of to-dos without creating multiple routes.
3:30:00 - Dynamic Functionality Testing π
- Testing of dynamic routing in the application.
- Verify that item clicks will navigate to the specific to-do edit page successfully.
3:31:10 - Interactive Editing of To-Dos π
- The speaker demonstrates zooming in on the screen for better visibility of the editing process.
- The interface displays the ID numbers for each to-do.
3:31:34 - Setting Up the Edit Page βοΈ
- Transition to Visual Studio Code (VS Code) for editing.
- The speaker discusses closing terminal windows and navigating between files.
- Emphasizes the need to import React hooks and necessary components.
3:34:11 - Loading and Updating To-Do Data π
- Introduction to defining state for the individual to-do being edited.
- The use of async functions to fetch and update to-do data in AsyncStorage is covered.
3:39:39 - Handling Save Functionality πΎ
- Discusses implementing the handleSave function for saving changes.
- Comparison between existing to-dos and the updated to-do is made for updating the storage.
3:45:39 - Finalizing the Edit Page UI π¨
- The speaker wraps components within Safe Area View.
- Details on adding text inputs for editing, and buttons for saving or canceling changes are described.
- A brief mention of the style application for the UI components is also outlined.
- Initial setup of input field with placeholder, text color, and value.
- Utilizes optional chaining for input handling to avoid undefined errors.
3:48:24 - Theme Toggle Implementation π
- Implementation of a button to toggle theme between light and dark modes.
- Reuses previous styles for consistent design across the button.
- Establishing save and cancel buttons with distinct styling.
- Callback functions assigned for each button to manage to-do list actions.
3:56:00 - Styling Adjustments in Dark Mode π¨
- Adjustments to styles for input and buttons to improve visibility in dark mode.
- Focus on ensuring both input and buttons retain usability across screen sizes.
- Implementation of a maximum length restriction on input fields to enhance user experience.
- Ensures that entries are contained within 30 characters for better display and functionality.
4:01:32 - Task Creation and Editing π
- User saves a task to take out the trash every week.
- Character limit issues encountered while editing the task.
4:02:16 - Introduction to Development Builds π
- Exploring Dynamic routes with Expo Router for a React Native app.
- Difference between Expo Go and development builds outlined.
4:03:30 - Setting Up Development Environment π οΈ
- User logs into Expo on expo.dev and sets up for a development build.
- Introduces EAS (Expo Application Services) for building apps in the cloud.
4:07:20 - Configuring EAS Build βοΈ
- Commands for EAS build initialization and configuration.
- Importance of skipping overwriting local iOS/Android directories.
4:14:41 - Building Android Application π±
- User initiates EAS build process for Android.
- Discussion on installing Expo Dev client and generating an Android key store.
4:16:33 - Build Progress Overview π
- Added details in logs while the build progresses.
- Mentioned running Expo doctor to check compatibility issues.
4:17:14 - Build Completion and QR Code π±
- Build has completed, displaying a new QR code.
- The need to start the local server with
npx Expo start highlighted.
4:18:14 - Scanning QR Code π
- Discussed challenges encountered with the tunnel flag while scanning the QR code.
- Successfully started the development server and scanned the correct QR code.
4:20:10 - Installation Process π₯
- Explained the installation process on mobile after downloading the file.
- Highlighted potential security prompts related to app installations.
4:22:31 - Resources and Next Steps π
- Encouraged to reference Expo documentation for further learning.
- Highlighted future learning opportunities, including beginner projects and additional resources.
π¬ Never miss a freeCodeCamp.org video β every new upload summarised in your inbox.
Follow free