Skip to content

Instantly share code, notes, and snippets.

View CaiJingLong's full-sized avatar
💭
I may be slow to respond.

Caijinglong CaiJingLong

💭
I may be slow to respond.
View GitHub Profile
@CaiJingLong
CaiJingLong / example.dart
Created October 24, 2019 03:00
Example of image_editor and extended_image.
import 'dart:typed_data';
import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
import 'package:image_editor/image_editor.dart';
import 'const/resource.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@CaiJingLong
CaiJingLong / ThrottleWrapper.dart
Created October 16, 2019 08:25
点击防抖动
import 'package:flutter/material.dart';
class ThrottleWrapper extends StatefulWidget {
final Duration throttleDuration;
final Widget child;
final Function onTap;
const ThrottleWrapper({
Key key,
this.throttleDuration,
@CaiJingLong
CaiJingLong / day_of_month.dart
Created October 16, 2019 07:58
day of month
int dayOfMonth(int year, int month) {
return DateTime(year, month + 1, 1).subtract(Duration(days: 1)).day;
}
@CaiJingLong
CaiJingLong / get_uint8List.dart
Created October 12, 2019 08:13
从extended_image 的 editorKey中快速拿图片数据.
static Future<Uint8List> getImageFromEditorKey(
GlobalKey<ExtendedImageEditorState> editorKey) async {
Uint8List result;
final provider =
editorKey.currentState.widget.extendedImageState.imageProvider;
if (provider is AssetImage) {
ByteData byteData;
if (provider.package == null) {
byteData = await rootBundle.load(provider.assetName);
} else {
@CaiJingLong
CaiJingLong / base_provider.dart
Last active September 25, 2019 09:07
global_widget
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class BaseProvider extends ChangeNotifier {
RouteHelper get route => RouteHelper();
T getProvider<T>() {
return Provider.of<T>(route.navigatorKey.currentContext);
}
}
@CaiJingLong
CaiJingLong / jpg-handle.dart
Created September 19, 2019 09:34
处理jpg格式的元数据, 后续会继续更新
import 'dart:async';
import 'dart:io';
main(List<String> arguments) async {
// final path = "timg.jpg";
// final path = "/Users/cai/Desktop/1CD83646CA9CF1C2B0F7364B341E8580.gif";
final path = "/Users/cai/Desktop/sxwphone.png";
final imgFile = File(path);
@CaiJingLong
CaiJingLong / home_container.dart
Last active July 29, 2021 14:34
flutter 懒加载 切换保持状态
class HomeContainer extends StatefulWidget {
final List<Widget> children;
final int currentIndex;
const HomeContainer({
Key key,
this.children,
this.currentIndex,
}) : super(key: key);
@CaiJingLong
CaiJingLong / guide_mask.dart
Created July 8, 2019 13:06
添加一个半透明"引导"
import 'package:flutter/material.dart';
class Mask extends StatefulWidget {
final Function onTap;
final Rect rect;
const Mask({Key key, this.onTap, this.rect}) : super(key: key);
@override
_MaskState createState() => _MaskState();
}
@CaiJingLong
CaiJingLong / UIHelper.dart
Last active February 29, 2024 14:09
Use Offstage widget to measure the widget size.
import 'dart:async';
import 'package:flutter/material.dart';
class MeasureWidget extends StatefulWidget {
final Widget child;
final ValueSetter<Rect> measureRect;
final BoxConstraints boxConstraints;
const MeasureWidget({
@CaiJingLong
CaiJingLong / AndroidManifest.xml
Created June 13, 2019 09:36
flutter 指纹识别/脸识别
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>