Skip to content

Instantly share code, notes, and snippets.

@Heilum
Heilum / gist:94f49e224b1291451750bb40cb0bed5e
Created March 21, 2024 12:20
A ImageProvider from the photo's assetId of photo gallery
import 'dart:ui' as ui;
import 'package:flutter/foundation.dart';
import 'package:photo_manager/photo_manager.dart';
import 'package:flutter/material.dart';
class PhotoAssetEntityImageProvider extends ImageProvider<String> {
const PhotoAssetEntityImageProvider(this.photoId);
@Heilum
Heilum / gist:119a75af847fc14d994daccd1f2041d3
Created November 27, 2023 06:35
github action for deploy apk to pgy
name: qat_apk on pgy
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./app/xxxxxx
@Heilum
Heilum / gist:31abcdace37edc2dd5ce4b30ff0df6ee
Created September 6, 2023 03:55
Using wechat_assets_picker package to pick image/video, and live record simultaneously
import 'package:wechat_assets_picker/wechat_assets_picker.dart';
import 'package:wechat_camera_picker/wechat_camera_picker.dart';
Future<void> showAssetsPicker(
BuildContext context,
bool forVideo,
int maxCount, {
required Function(BuildContext, List<AssetEntity>? result) handleResult,
@Heilum
Heilum / swift
Last active June 6, 2022 05:46
Play video using SKVideoNode
private func resolutionForVideo(url: URL) -> CGSize? {
guard let track = AVURLAsset(url: url).tracks(withMediaType: AVMediaType.video).first else { return nil }
let size = track.naturalSize.applying(track.preferredTransform)
return CGSize(width: abs(size.width), height: abs(size.height))
}
@objc func tapped(recognizer :UIGestureRecognizer) {
guard let currentFrame = self.sceneView.session.currentFrame else {
return
@Heilum
Heilum / gist:804660e0b66b60fb3d665c96f0d4dc52
Created May 19, 2022 05:27
Dart download fragmented file
import 'package:http/http.dart';
static Future downloadFragmentedFile(String url, File localFile) async {
final request = Request('get', Uri.parse(url));
request.headers.addAll({"range": "bytes=0-"});
StreamedResponse rs = await Client().send(request);
var fileStream = localFile.openWrite();
await rs.stream.pipe(fileStream);
}
@Heilum
Heilum / create_sf_flutter.sh
Last active May 9, 2022 12:22
A script to create flutter project scaffold
echo ">>>Creating flutter project:$1";
flutter create $1
cd $1
#添加常用Packages
flutter pub add equatable
flutter pub add flutter_bloc
flutter pub add intl
flutter pub add flutter_svprogresshud
flutter pub add shared_preferences
flutter pub add package_info_plus
@Heilum
Heilum / gist:fe156f740bbdb471a828f290e0cb1eed
Created March 24, 2021 13:36
selecting_multiple_items_with_a_two-finger_pan_gesture
//https://developer.apple.com/documentation/uikit/uitableviewdelegate/selecting_multiple_items_with_a_two-finger_pan_gesture
//CollectionViewCell.swift
//=====================
/*
See LICENSE folder for this sample’s licensing information.
Abstract:
A custom collection view cell that `CollectionViewController` displays.
*/
//
// Collection+SF.swift
// PanoAI
//
// Created by Forever Positive on 2021/1/30.
//
import Foundation
extension Array where Element == Optional<Any>{
import UIKit
extension UIRefreshControl {
func beginRefreshingManually(_ tintColor:UIColor) {
self.tintColor = tintColor
if let scrollView = superview as? UIScrollView {
scrollView.setContentOffset(CGPoint(x: 0, y:scrollView.contentOffset.y - frame.height), animated: false)
}
beginRefreshing()
self.sendActions(for: .valueChanged)