Title: Creating a Bank Selection Modal in React Native

Introduction: In this blog post, we will learn how to create a bank selection modal in a React Native application. The modal will allow users to choose their preferred bank from a list of Nigerian banks using a drag icon. We will use the react-native-modal and react-native-draggable libraries for this purpose. Let's get started!

Prerequisites: Make sure you have a basic understanding of React Native and have set up a React Native project using Expo or another development environment.

Step 1: Setting up the Project Assuming you have a React Native project already set up, install the required libraries:

npm install react-native-modal react-native-draggable @expo/vector-icons --save

Step 2: Importing and Using the Components In your ModalScreen.js file (or any other suitable component file), import the necessary components and create the ModalScreen functional component.

import React, { useState } from 'react';
import { View, TouchableOpacity, Text, ScrollView, StyleSheet } from 'react-native';
import { MaterialCommunityIcons } from '@expo/vector-icons';
import Modal from 'react-native-modal';
import Draggable from 'react-native-draggable';

Step 3: Implementing the Bank Selection Modal Next, we will create the ModalScreen component that displays the bank selection modal with the drag icon.

const ModalScreen = () => {
  const [modalVisible, setModalVisible] = useState(false);
  const [selectedBank, setSelectedBank] = useState('');

  const handleSelectBankPress = () => {
    setModalVisible(!modalVisible);
  };

  const handleBankSelect = (bankName) => {
    setSelectedBank(bankName);
    setModalVisible(!modalVisible);
  };

  const nigeriaBanks = [
    // List of Nigerian banks
    // Add more banks here
  ];

  return (
    <>
      <View>
        <TouchableOpacity onPress={handleSelectBankPress}>
          <Text>{selectedBank || 'Select a bank'}</Text>
        </TouchableOpacity>
      </View>

      <Modal
        isVisible={modalVisible}
        onBackdropPress={() => setModalVisible(false)}
        style={styles.modalContainer}
        backdropOpacity={0} // Set the backdropOpacity to 0 (transparent)
      >
        <View style={styles.modalContent}>
          {/* Drag Icon */}
          <Draggable x={100} y={100}>
            <MaterialCommunityIcons name="drag-horizontal" size={60} color="black" />
          </Draggable>

          {/* Bank List */}
          <ScrollView contentContainerStyle={styles.scroller} showsVerticalScrollIndicator={false}>
            {nigeriaBanks.map((bankName) => (
              <TouchableOpacity key={bankName} onPress={() => handleBankSelect(bankName)}>
                <Text style={styles.mytexty}>{bankName}</Text>
              </TouchableOpacity>
            ))}
          </ScrollView>
        </View>
      </Modal>
    </>
  );
};

Step 4: Styling the Modal Lastly, let's add some basic styles to make the modal look visually appealing.

const styles = StyleSheet.create({
  modalContainer: {
    borderWidth: 0,
    position: 'absolute',
    height: 300,
    width: '100%',
    bottom: -20,
    borderTopRightRadius: 30,
    borderTopLeftRadius: 30,
    backgroundColor: 'red',
    marginLeft: 0,
    marginRight: 0,
  },
  modalContent: {
    backgroundColor: 'lightblue',
  },
  scroller: {
    display: 'flex',
    alignItems: 'center',
    gap: 20,
  },
  mytexty: {
    fontSize: 16,
  },
  handle: {
    textAlign: 'center',
    padding: 20,
  },
});

export default ModalScreen;

Conclusion: In this tutorial, we have successfully created a bank selection modal using React Native. The modal displays a list of Nigerian banks, and users can choose their preferred bank. The modal is enhanced with a drag icon using the react-native-draggable library, making it more interactive and user-friendly. You can further customize the styles and functionality according to your project's requirements.

0
Subscribe to my newsletter

Read articles from Ogunuyo Ogheneruemu B directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ogunuyo Ogheneruemu B
Ogunuyo Ogheneruemu B

I'm Ogunuyo Ogheneruemu Brown, a senior software developer. I specialize in DApp apps, fintech solutions, nursing web apps, fitness platforms, and e-commerce systems. Throughout my career, I've delivered successful projects, showcasing strong technical skills and problem-solving abilities. I create secure and user-friendly fintech innovations. Outside work, I enjoy coding, swimming, and playing football. I'm an avid reader and fitness enthusiast. Music inspires me. I'm committed to continuous growth and creating impactful software solutions. Let's connect and collaborate to make a lasting impact in software development.