DemoRouter.m 3.5 KB
Newer Older
Jidong Chen's avatar
init  
Jidong Chen committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
//
//  DemoRouter.m
//  Runner
//
//  Created by Jidong Chen on 2018/10/22.
//  Copyright © 2018年 The Chromium Authors. All rights reserved.
//

#import "DemoRouter.h"
#import <flutter_boost/FlutterBoost.h>

@implementation DemoRouter

+ (DemoRouter *)sharedRouter
{
    static id instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

Jidong Chen's avatar
Jidong Chen committed
24
// Boost 2 switch
Jidong Chen's avatar
Jidong Chen committed
25
- (BOOL)useBoost2
Jidong Chen's avatar
Jidong Chen committed
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
{
    return YES;
}

#pragma mark - Boost 2
- (void)open:(NSString *)name
   urlParams:(NSDictionary *)params
        exts:(NSDictionary *)exts
  completion:(void (^)(BOOL))completion
{
    BOOL animated = [exts[@"animated"] boolValue];
    animated = YES;
    if([params[@"present"] boolValue]){
        FLB2FlutterViewContainer *vc = FLB2FlutterViewContainer.new;
        [vc setName:name params:params];
        [self.navigationController presentViewController:vc animated:animated completion:^{
            if(completion) completion(YES);
        }];
    }else{
        FLB2FlutterViewContainer *vc = FLB2FlutterViewContainer.new;
        [vc setName:name params:params];
        [self.navigationController pushViewController:vc animated:animated];
        if(completion) completion(YES);
    }
}

- (void)close:(NSString *)uid
       result:(NSDictionary *)result
         exts:(NSDictionary *)exts
   completion:(void (^)(BOOL))completion
{
    BOOL animated = [exts[@"animated"] boolValue];
    animated = YES;
    FLBFlutterViewContainer *vc = (id)self.navigationController.presentedViewController;
    if([vc isKindOfClass:FLBFlutterViewContainer.class] && [vc.uniqueIDString isEqual: uid]){
        [vc dismissViewControllerAnimated:animated completion:^{}];
    }else{
        [self.navigationController popViewControllerAnimated:animated];
    }
}

#pragma mark - Boost 1
Jidong Chen's avatar
init  
Jidong Chen committed
68 69 70 71 72
- (void)openPage:(NSString *)name
          params:(NSDictionary *)params
        animated:(BOOL)animated
      completion:(void (^)(BOOL))completion
{
Jidong Chen's avatar
Jidong Chen committed
73
    if([self useBoost2]){
Jidong Chen's avatar
Jidong Chen committed
74 75 76 77 78 79 80 81
        NSMutableDictionary *exts = NSMutableDictionary.new;
        exts[@"url"] = name;
        exts[@"params"] = params;
        exts[@"animated"] = @(animated);
        [self open:name urlParams:params exts:exts completion:completion];
        return;
    }
    
Jidong Chen's avatar
init  
Jidong Chen committed
82 83 84
    if([params[@"present"] boolValue]){
        FLBFlutterViewContainer *vc = FLBFlutterViewContainer.new;
        [vc setName:name params:params];
Jidong Chen's avatar
Jidong Chen committed
85 86 87
        [self.navigationController presentViewController:vc animated:animated completion:^{
            if(completion) completion(YES);
        }];
Jidong Chen's avatar
init  
Jidong Chen committed
88 89 90 91
    }else{
        FLBFlutterViewContainer *vc = FLBFlutterViewContainer.new;
        [vc setName:name params:params];
        [self.navigationController pushViewController:vc animated:animated];
Jidong Chen's avatar
Jidong Chen committed
92
        if(completion) completion(YES);
Jidong Chen's avatar
init  
Jidong Chen committed
93 94 95
    }
}

Jidong Chen's avatar
Jidong Chen committed
96

Jidong Chen's avatar
init  
Jidong Chen committed
97 98 99 100


- (void)closePage:(NSString *)uid animated:(BOOL)animated params:(NSDictionary *)params completion:(void (^)(BOOL))completion
{
Jidong Chen's avatar
Jidong Chen committed
101
    if([self useBoost2]){
Jidong Chen's avatar
Jidong Chen committed
102 103 104 105 106 107 108
        NSMutableDictionary *exts = NSMutableDictionary.new;
        exts[@"params"] = params;
        exts[@"animated"] = @(animated);
        [self close:uid result:@{} exts:exts completion:completion];
        return;
    }
    
Jidong Chen's avatar
init  
Jidong Chen committed
109 110 111 112 113 114 115 116
    FLBFlutterViewContainer *vc = (id)self.navigationController.presentedViewController;
    if([vc isKindOfClass:FLBFlutterViewContainer.class] && [vc.uniqueIDString isEqual: uid]){
        [vc dismissViewControllerAnimated:animated completion:^{}];
    }else{
        [self.navigationController popViewControllerAnimated:animated];
    }
}
@end