How to stop activating a plugin and show admin notice when dependent plugins minimum version is not met

You can add the following code in your plugin. I have used this in my ARB booking plugin and it worked perfectly. The full details of the code with explanation can be found here:

class FT_AdminNotice {
    
    protected $min_wc="5.0.0"; //replace '5.0.0' with your dependent plugin version number
    
    /**
     * Register the activation hook
     */
    public function __construct() {
        register_activation_hook( __FILE__, array( $this, 'ft_install' ) );
    }
    
    /**
     * Check the dependent plugin version
     */
    protected function ft_is_wc_compatible() {          
        return defined( 'WC_VERSION' ) && version_compare( WC_VERSION, $this->min_wc, '>=' );
    }
    
    /**
     * Function to deactivate the plugin
     */
    protected function ft_deactivate_plugin() {
        require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
        deactivate_plugins( plugin_basename( __FILE__ ) );
        if ( isset( $_GET['activate'] ) ) {
            unset( $_GET['activate'] );
        }
    }
    
    /**
     * Deactivate the plugin and display a notice if the dependent plugin is not compatible or not active.
     */
    public function ft_install() {
        if ( ! $this->ft_is_wc_compatible() || ! class_exists( 'WooCommerce' ) ) {
            $this->ft_deactivate_plugin();
            wp_die( 'Could not be activated. ' . $this->get_ft_admin_notices() );
        } else {
            //do your fancy staff here
        }
    }
    
    /**
     * Writing the admin notice
     */
    protected function get_ft_admin_notices() {
        return sprintf(
            '%1$s requires WooCommerce version %2$s or higher installed and active. You can download WooCommerce latest version %3$s OR go back to %4$s.',
            '<strong>' . $this->plugin_name . '</strong>',
            $this->min_wc,
            '<strong><a href="https://downloads.wordpress.org/plugin/woocommerce.latest-stable.zip">from here</a></strong>',
            '<strong><a href="' . esc_url( admin_url( 'plugins.php' ) ) . '">plugins page</a></strong>'
        );
    }

}

new FT_AdminNotice();

You will get admin notice like this when your plugin is activated without the Dependent plugin’s desired version:
Notice to activate desired version of the dependent plugin

You see the admin notice has the download link of the dependent plugin and also the user can get back to the plugins page by clicking on the plugins page link.