Skip to content

Instantly share code, notes, and snippets.

View RyanDsilva's full-sized avatar
:octocat:
Always Learning

Ryan Rony Dsilva RyanDsilva

:octocat:
Always Learning
View GitHub Profile
@RyanDsilva
RyanDsilva / jailbreak_detection.dart
Created June 26, 2022 09:30
Checking for Root / Jailbreak
import 'dart:io';
import 'package:flutter/services.dart';
import 'package:flutter_jailbreak_detection/flutter_jailbreak_detection.dart';
Future<bool> checkJailbrokenOrRooted() async {
bool jailbrokenOrRooted = true;
try {
if (Platform.isAndroid) {
jailbrokenOrRooted = await FlutterJailbreakDetection.developerMode;
@RyanDsilva
RyanDsilva / Info.plist
Last active June 26, 2022 09:29
NSAppTransportSecurity Config
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>ryandsilva.dev</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
@RyanDsilva
RyanDsilva / AndroidManifest.xml
Created June 26, 2022 09:22
Android Network Config
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="dev.ryandsilva.flutter_app">
<application
android:label="flutter_app"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:networkSecurityConfig="@xml/security_config">
...
...
@RyanDsilva
RyanDsilva / ssl_pinning.dart
Created June 26, 2022 09:20
SSL Pinning Implementation
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:http/io_client.dart';
Future<SecurityContext> get globalContext async {
final sslCert = await rootBundle.load('assets/certs/ryandsilva-dev.pem');
final sc = SecurityContext(withTrustedRoots: false);
sc.setTrustedCertificatesBytes(sslCert.buffer.asInt8List());
@RyanDsilva
RyanDsilva / secure_storage.dart
Created June 26, 2022 09:17
Using Secure Storage
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
Future<void> secureStorageActions() async {
// Create storage
const storage = FlutterSecureStorage();
// Read value
String? value = await storage.read(key: 'key');
// Read all values
@RyanDsilva
RyanDsilva / custom_error.dart
Last active June 26, 2022 09:16
Custom Error Widget
return MaterialApp(
title: 'Flutter App',
builder: (context, widget) {
ErrorWidget.builder = (FlutterErrorDetails errorDetails) {
return CustomErrorWidget(errorDetails: errorDetails);
};
return widget ?? const Scaffold();
},
...
...
@RyanDsilva
RyanDsilva / try_catch.dart
Created June 26, 2022 09:14
Try-Catch and Error Handling in Flutter
import 'package:flutter/material.dart';
Future<dynamic> functionThatThrowsException() async {
// some code
throw Exception('Could not perform operation.');
}
Future<void> testFunction() async {
try {
var x = await functionThatThrowsException();
@RyanDsilva
RyanDsilva / serverless.yml
Created August 26, 2021 19:03
AWS Step Functions serverless.yml
service: aws-step-functions
variablesResolutionMode: 20210326
provider:
name: aws
stage: ${opt:stage, 'dev'}
# profile: profile-name
region: eu-west-1
runtime: nodejs14.x
@RyanDsilva
RyanDsilva / lefthook.yaml
Created May 23, 2021 15:08
Lefthook YAML file for Flutter projects
pre-commit:
commands:
lint_code:
glob: '*.dart'
run: dart fix lib && git add .
format_code:
glob: '*.dart'
run: flutter format {staged_files} && git add .
pre-push:
@RyanDsilva
RyanDsilva / dio_api_helper.dart
Created July 15, 2020 15:15
Flutter Dio Helper Class
import 'package:dio/dio.dart';
class ApiBaseHelper {
static final String url = 'BASE_URL';
static BaseOptions opts = BaseOptions(
baseUrl: url,
responseType: ResponseType.json,
connectTimeout: 30000,
receiveTimeout: 30000,
);