Skip to content

Instantly share code, notes, and snippets.

View danielgomezrico's full-sized avatar

Daniel Gomez danielgomezrico

View GitHub Profile
@danielgomezrico
danielgomezrico / install-android-sdk.sh
Created November 29, 2016 20:10
Android - install dependencies in terminal
android update sdk --no-ui --all --filter tool,extra-android-m2repository,extra-android-support,extra-google-google_play_services,extra-google-m2repository,android-25,build-tools-25.0.0
@danielgomezrico
danielgomezrico / pre-commit.sh
Created January 20, 2023 16:32
Git - Hook - Pre Commit - Flutter: format files before they are commited
#!/bin/sh
#
# Autoformat all modified files before commit
#
function format_if_required {
FILES=$1
flutter format $FILES | grep -Ev '^(Unchanged)'
@danielgomezrico
danielgomezrico / pre-commit.sh
Created December 14, 2022 17:22
Git - hook - pre-commit: for flutter/dart format each modified file ultra fast before each commit
#!/bin/sh
#
# Autoformat all modified files before commit
#
function format_if_required {
FILES=$1
flutter format $FILES | grep -Ev '^(Unchanged)'
@danielgomezrico
danielgomezrico / build.dart
Last active August 24, 2022 20:22
Dart - how to create a url with query params with language features
// Use language features to build the url
String buildUrlWithQueryParams(String url, Map<String, dynamic> queryParams) {
final uri = Uri.parse(url);
final fullUri = uri.replace(
queryParameters: {
...uri.queryParameters,
...queryParams,
},
);
@danielgomezrico
danielgomezrico / comment_with_pr_number.yml
Created July 15, 2022 19:57
Github Action - Comment on PR using the PR number
name: PR Commenter
on:
pull_request:
types: [opened, reopened]
jobs:
comment:
runs-on: ubuntu-latest
steps:
@danielgomezrico
danielgomezrico / ScrollToTopDataObserver.kt
Created July 15, 2016 04:00
Android / Kotlin - Scroll recycler view automatically based on initial items and scroll to bottom on new items (like a chat room)
class ScrollToTopDataObserver(val layoutManager: LinearLayoutManager,
val recyclerView: RecyclerView)
: RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
super.onItemRangeInserted(positionStart, itemCount)
val lastVisiblePosition = layoutManager.findLastCompletelyVisibleItemPosition()
// If the recycler view is initially being loaded or the user is at the bottom of the
// list, scroll to the bottom of the list to show the newly added message.
if (lastVisiblePosition == -1 || positionStart >= itemCount - 1 && lastVisiblePosition == positionStart - 1) {
@danielgomezrico
danielgomezrico / await.dart
Last active March 18, 2022 22:01
List.await • dart: example to see the order of the returned results
import 'dart:async';
Future main() async {
print('start');
final li = await Future.wait([fetch(4), fetch(6)]);
print('results: ${li[0]} ${li[1]}'); // results: 4 2
final li2 = await Future.wait([fetch(6), fetch(3)]);
print('results 2: ${li2[0]} ${li2[1]}'); // results: 6 3
@danielgomezrico
danielgomezrico / call_example.dart
Created February 14, 2022 18:05
UseCase / Interactor - naming convention to use with use cases
class UpdateUserInteractor {
Future<void> call(String name) async {
print("done $name");
return;
}
}
void main() async {
final updateUser = UpdateUserInteractor();
await updateUser('Dan');
@danielgomezrico
danielgomezrico / result_monad_1.dart
Last active February 9, 2022 12:40
Result Monad as example
///
/// The Result Monad
///
abstract class Result<T> {
bool isSuccess() {
return this is Success;
}
Success<T> asSuccess() {
@danielgomezrico
danielgomezrico / EditText.xml
Created April 23, 2015 04:30
Android - EditText disabled but clickable
<EditText ...
android:clickable="true"
android:cursorVisible="false"
android:focusable="false"/>