This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Update Gradle, Java and other Android project settings in a Flutter project | |
# See: https://gradle.org/releases/ | |
DESIRED_GRADLE_VERSION="8.9" | |
# Build errors often show the required Java version | |
DESIRED_JAVA_VERSION="17" | |
# See: https://developer.android.com/ndk/downloads | |
DESIRED_NDK_VERSION="27.0.12077973" | |
# The minimum Android SDK version |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
extension Decodable where Self: Encodable { | |
/// Creates a new instance and changes the value for the provided key. | |
/// | |
/// - Parameters: | |
/// - key: The key path to the property that you want to modify. | |
/// Use period to separate levels and [] for indexes. | |
/// Examples: "id", "name.firstName", "children[2].name.firstName" | |
/// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ContentView.swift | |
// SwiftUIPlayground | |
// | |
// Created by BJ Homer on 4/26/21. | |
// | |
import SwiftUI | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
extension UITextField { | |
/// Add a trailing placeholder label that tracks the text as it changes | |
func addTrailingPlaceholder(_ placeholder: String) { | |
let label = UILabel() | |
label.text = placeholder | |
label.alpha = 0.3 | |
label.isHidden = true | |
let container = UIView() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol ReferenceEncodable: Identifiable { | |
static var referenceStorageKey: CodingUserInfoKey { get } | |
} | |
extension ReferenceEncodable { | |
static var referenceStorageKey: CodingUserInfoKey { | |
CodingUserInfoKey(rawValue: String(describing: Self.self) + "ReferenceStorage")! | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@objc protocol ExampleActions: AnyObject { | |
func pushUIKitViewController() | |
} | |
struct ExampleView: View { | |
@FirstResponder private var firstResponder | |
var body: some View { | |
Button { | |
firstResponder.sendAction(#selector(ExampleActions.pushUIKitViewController)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Combine | |
import Foundation | |
/// This protocols allows you to declare your type as having a distinct network | |
/// representation. | |
/// | |
/// Rather than writing and maintaining a custom `Decodable` implementation for | |
/// your type, declare a brand new struct that exactly matches the expected | |
/// network response, and then write an initializer for your actual type that | |
/// accepts a `NetworkResponse`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Result { | |
public func `catch`(_ handler: () throws -> Success) -> Result<Success, Error> { | |
flatMapError { _ in | |
.init { try handler() } | |
} | |
} | |
public func `catch`(_ handler: (Failure) throws -> Success) -> Result<Success, Error> { | |
flatMapError { error in | |
.init { try handler(error) } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Points and display type | |
PPI is points per inch below, not pixels per inch. Not all models are listed, just the first model with a new display size. Diamond, RGB Stripe and Pentile RGB refer to the subpixel patterns. | |
iPhone 1 = 320×480 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 4 = 320×480 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 5 = 320×568 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 6 = 375×667 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 6 Plus = 414×736 at 153.5PPI sRGB IPS LCD RGB Stripe | |
iPhone 7 = 375×667 at 163PPI P3 IPS LCD RGB Stripe |
NewerOlder