flutter 通用工具类 pub地址: https://pub.dev/packages/dd_js_util
只需要3步.
- 注册
void main(){
AppThemeUtil().registerAdapterAndOpenBox();
}
- 开始使用
使用ThemeBuildWidget
包裹MaterialApp
ThemeBuildWidget(themeBuild: (appThemeSetting) {
return MaterialApp(
theme: MyAppTheme.getTheme(appThemeSetting.themeIndex),
themeMode: appThemeSetting.getThemeMode
);
})
- 前往更换主题设置页面
context.navToWidget(to: ThemeSettingPage());
- 更换主题API
AppThemeUtil().changeThemeWithEnum(CustomAppThemeData theme);//参数是主题枚举
//1.初始化,换成你的域名
BaseApi.host='https://itbug.shop';
//2.声明接口
class BlogsApi extends BaseApi {
BlogsApi():super("/blogs");
}
//3.使用接口
void fetchBlogs(){
BlogsApi().request(); //发起请求
}
///-----------高级用法
///如果有特殊需求,比如添加拦截器等等
class UserProfileApi extends BaseApi{
UserProfileApi():super('/user/profile',httpMethod:HttpMethod.post){
//添加拦截器
intrtceptors.add(TokenIntrtceptors());
}
///获取添加参数
set token(String tokenValue) => params['token'] = tokenValue
}
//使用
final api = UserProfileApi()..token = 'your token';
api.request(); //发起请求
final result = await DdJsUtil.isWeChatBrowser; // true or false
- 下载图片到本地相册
String#downloadImage
// 示例
// [checkPermission]: 下载前是否检测一下是否有访问相册的权限,默认false
// [isAsset]: 是否为本地资产图片,默认false
"https://itbug.shop/logo.png".downloadImage(checkPermission:true,isAsset:false);
- 倒计时组件
//示例
CountDown(
endTime: "${data.toIso8601String()}",
onEnd: (){
print('倒计时结束');
},
autoStart: false,
controller: _controller,
),
- 九宫格选择图片
PictureSelection(multipleChoice: true,controller: _pictureSelectionController,),
- 用法
final files = _pictureSelectionController.getFiles;//获取全部图片
_pictureSelectionController.clean();//清空用户选择的图片
///更多方法查看控制器类
/// file <- 压缩后的文件
/// 参数1 <- 要讲压缩后的图片保存到哪个路径
/// 参数2 [quality] <- 压缩质量
File? file = "file path".fileImageCompress("to file path",quality: 50);
/// 参数1: 图片列表
/// 参数2: 初始化显示第几张图片
/// 参数3: 是否为本地类型图片,如果是,参数1需要替换为File的路径
ImageView(images: ["网络图片","网络图片"],initCurrent: 0,isFile: false);
1.导包
# 导入国际化包
flutter_localizations:
sdk: flutter
2.引入
GetMaterialApp(
localizationsDelegates: [
//这个要在第一位
MyLocalizationsDelegate(), //导入1
GlobalMaterialLocalizations.delegate,//导入2
GlobalWidgetsLocalizations.delegate,//导入3
GlobalCupertinoLocalizations.delegate,//导入4
],
supportedLocales: [
const Locale('zh', 'CH'),//导入1
const Locale('en', 'US'),//导入2
],
)
3.使用组件
SizedBox(
width: 700,
height: 200,
child: CupertinoDatePicker(
hideDay: true,
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (DateTime value) {
print(value);
},
),
)
KeyboardMixin
核心类
在ConsumerState
混入使用扩展
class _ChatEditState extends ConsumerState<ChatEdit> with KeyboardMixin<ChatEdit>
ref
是框架riverpod
状态管理中的类
ref.watchKeyBoardHeight; //键盘高度实时获取
///键盘展示回调
///[height] - 键盘实时高度
void onShow(double height){}
///键盘关闭回调
void onClose(){}
///将键盘高度设置为0
void reset(){}
让你的Map<String,dynamic>拥有强大的函数