nativeshell 0.1.0

NativeShell Rust package
Documentation
use super::{platform::engine::PlatformEngine, BinaryMessenger};
use crate::Result;

pub struct FlutterEngine {
    pub(super) platform_engine: PlatformEngine,
    binary_messenger: Option<BinaryMessenger>,
}

impl FlutterEngine {
    pub fn create() -> Self {
        let platform_engine = PlatformEngine::new();

        let messenger = BinaryMessenger::new(platform_engine.new_binary_messenger());
        FlutterEngine {
            platform_engine,
            binary_messenger: Some(messenger),
        }
    }

    pub fn binary_messenger(&self) -> &BinaryMessenger {
        self.binary_messenger.as_ref().unwrap()
    }

    pub fn launch(&mut self) -> Result<()> {
        self.platform_engine.launch().map_err(|e| e.into())
    }

    pub fn shut_down(&mut self) -> Result<()> {
        self.binary_messenger.take();
        self.platform_engine.shut_down().map_err(|e| e.into())
    }
}