Skip to content

Instantly share code, notes, and snippets.

import Foundation
func hexCharAsNumber(_ char: String) -> Int64 {
assert(char.count == 1)
let c = Int64((char as NSString).character(at: 0))
if c >= Int(("a" as NSString).character(at: 0)) {
return c - 87
} else {
# 修改应用图标
# 1. 添加依赖
# flutter pub add dev:flutter_launcher_icons
# 2. 运行
# flutter pub run flutter_launcher_icons
flutter_launcher_icons:
android: "launcher_icon"
ios: true
macos:
generate: true
/// 对象状态[T]的历史堆栈,可以推入或者弹出
class HistoryStack<T> {
/// 最大索引的数据,即为最新的状态
final _store = <T>[];
/// 读取内容,用于保存的数据
({
List<T> store,
int step,
@lvsecoto
lvsecoto / AnimatedVisibilityWidget.dart
Created May 29, 2024 02:30
动画显示/隐藏组件
import 'package:flutter/material.dart';
Widget _defaultAnimationWidgetBuilder(
BuildContext context,
Animation<double> animation,
Widget? child,
) {
return SizeTransition(
axis: Axis.horizontal,
sizeFactor: animation,
/// 这里通过mixin给ProviderNotifier添加一些常用操作
// ignore_for_file: invalid_use_of_internal_member
library provider.notiifer;
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:riverpod/riverpod.dart';
@lvsecoto
lvsecoto / AnimatedSizeAndFade.dart
Created May 29, 2024 02:30
组件大小/内容变化动画
import 'package:flutter/material.dart';
class AnimatedSizeAndFade extends StatelessWidget {
/// 每当Child内容发送改变,就会产生动画
///
/// * 大小发送改变,会有边界变换效果
/// * 内容变化,会有淡出淡入效果(和大小变化不一样,内容变化是通过[child]的类型或者key识别)
/// * 可以指定变化时,组件对齐的位置,比如一个上下展开收起效果的组件,那么它的[alignment]应该传[Alignment.topCenter]
const AnimatedSizeAndFade({
super.key,