Skip to content

Instantly share code, notes, and snippets.

View colloquet's full-sized avatar

Colloque Tsui colloquet

View GitHub Profile
@colloquet
colloquet / main.dart
Created October 16, 2025 05:58
Flutter Hide Tab bar on Scroll
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
@colloquet
colloquet / main.dart
Last active October 15, 2025 05:35
Flutter Dynamic Shadow
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
void main() {
runApp(const MyApp());
}
function useAPI({ url, body }) {
const [response, setResponse] = useState(null);
const cachedBody = useDeepMemo(() => body, [body]);
useEffect(() => {
// do the request here
}, [url, cachedBody]);
return response;
}
// you can also use other deep compare functions
// e.g. lodash's _.isEqual
import { equal } from '@wry/equality';
function useDeepMemo(memoFn, key) {
const ref = useRef();
if (!ref.current || !equal(key, ref.current.key)) {
ref.current = { key, value: memoFn() };
}
// usage
const response = useAPI({
url: '/api/get-user',
body: { userId },
});
// implementation
function useAPI({ url, body }) {
const [response, setResponse] = useState(null);
useEffect(() => {
let ignore = false;
const fetchUserData = async () => {
const response = await API.getUserData(userId);
if (!ignore) {
setUserData(response.userData);
}
};
fetchUserData();
return () => {
useEffect(() => {
const fetchUserData = async () => {
const response = await API.getUserData(userId);
setUserData(response.userData);
};
fetchUserData();
}, [userId);
@colloquet
colloquet / functions.php
Created December 28, 2015 06:42
fix slider not resizing problem
// fix slider not resizing problem
function royalslider_fix_tabs() {
?>
jQuery('[data-uk-tab]').on('show.uk.switcher', function(event, area){
var slider = jQuery('.royalSlider');
if(slider.length) {
slider.royalSlider('updateSliderSize', true);
}
});
@colloquet
colloquet / class-wp-rest-posts-controller.php
Last active December 4, 2015 12:05
Add WPML language filter to WP-REST API 2.0
// Replace this part in get_items() function
if ( is_array( $request['filter'] ) ) {
if (isset($request['filter']['lang'])) { // if get filter[lang]
global $sitepress;
$sitepress->switch_lang($request['filter']['lang']); // switch language
}
$args = array_merge( $args, $request['filter'] );
unset( $args['filter'] );
}
@colloquet
colloquet / wp-rest-api.php
Last active December 4, 2015 12:06
WordPress - add custom fields to WP REST API 1.0
<?php
// add custom fields to WP REST API
function wp_api_encode_acf($data,$post,$context){
$customMeta = (array) get_fields($post['ID']);
$data['meta'] = array_merge($data['meta'], $customMeta );
return $data;
}