idkit 0.0.8 idkit: ^0.0.8 copied to clipboard
idkit is a package that makes it easier for developers to develop projects, and contains a variety of functions and components.
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:idkit/idkit.dart';
void main() {
runApp(const Widgets());
}
void timeFormatHandle() {
/// Time formatting.
final DateTime dateTime = DateTime(2022, 6, 12, 9, 22, 50);
final String style1 = dateTime.format();
debugPrint(style1); // 2022-06-12 09:22:50
final String style2 = dateTime.format(style: 'yyyy/MM/dd hh:mm:ss');
debugPrint(style2); // 2022/06/12 09:22:50
final String style3 = dateTime.format(style: 'yyyy-MM-dd');
debugPrint(style3); // 2022-06-12
final String style4 = dateTime.format(style: 'hh:mm:ss');
debugPrint(style4); // 09:22:50
final String style5 = dateTime.format(style: 'yyyy-M-d');
debugPrint(style5); // 2022-6-12
final String style6 = dateTime.format(style: 'h:m:s');
debugPrint(style6); // 9:22:50
final String style7 = dateTime.format(style: 'yyyy~MM+dd hh:mm:ss');
debugPrint(style7); // 2022~06+12 hh:mm:ss
/// Friendly time formatting.
const Locale locale = Locale('zh');
// 1) Just now
final DateTime dateTime1 = DateTime.now();
debugPrint(dateTime1.friendFormat());
debugPrint(dateTime1.friendFormat(locale: locale));
// 2) Minutes ago
final DateTime dateTime2 = dateTime1.subtract(const Duration(minutes: 2));
debugPrint(dateTime2.friendFormat());
debugPrint(dateTime2.friendFormat(locale: locale));
// 3) Am & Pm
final DateTime dateTime3 = dateTime1.subtract(const Duration(minutes: 120));
debugPrint(dateTime3.friendFormat());
debugPrint(dateTime3.friendFormat(locale: locale));
// 4) Yesterday
final DateTime dateTime4 =
dateTime1.subtract(const Duration(days: 1, hours: 4));
debugPrint(dateTime4.friendFormat());
debugPrint(dateTime4.friendFormat(locale: locale));
// 5) Day of the week
final DateTime dateTime5 =
dateTime1.subtract(const Duration(days: 3, hours: 8));
debugPrint(dateTime5.friendFormat());
debugPrint(dateTime5.friendFormat(locale: locale));
// 6) Time of year
final DateTime dateTime6 =
dateTime1.subtract(const Duration(days: 240, hours: 10));
debugPrint(dateTime6.friendFormat());
debugPrint(dateTime6.friendFormat(locale: locale));
// 7) Outside one year
final DateTime dateTime7 =
dateTime1.subtract(const Duration(days: 400, hours: 12));
debugPrint(dateTime7.friendFormat());
debugPrint(dateTime7.friendFormat(locale: locale));
/// The given time is the day of the week.
final DateTime dateTime8 = DateTime(2022, 6, 12);
debugPrint(dateTime8.getWeak());
debugPrint(dateTime8.getWeak(locale: locale));
final DateTime dateTime9 = DateTime(2022, 5, 22);
debugPrint(dateTime9.getWeak());
debugPrint(dateTime9.getWeak(locale: locale));
final DateTime dateTime10 = DateTime(2022, 3, 2);
debugPrint(dateTime10.getWeak());
debugPrint(dateTime10.getWeak(locale: locale));
}
void thousandsHandle() {
// int
debugPrint('// Int ');
debugPrint((-0).formatThousands());
debugPrint((-123).formatThousands());
debugPrint((-1234).formatThousands());
debugPrint(123456.formatThousands());
debugPrint(1234567.formatThousands());
debugPrint(123456789.formatThousands());
debugPrint(1234567890.formatThousands());
// double
debugPrint('\n// Double ');
debugPrint(0.0.formatThousands());
debugPrint(123.12.formatThousands());
debugPrint(1234.123.formatThousands());
debugPrint(123456.1234.formatThousands());
debugPrint(1234567.12345.formatThousands());
debugPrint(123456789.123456.formatThousands());
debugPrint(1234567890.1234567.formatThousands());
// String
debugPrint('\n// String ');
debugPrint('0.0'.formatThousands());
debugPrint('123.12'.formatThousands());
debugPrint('1234.123'.formatThousands());
debugPrint('- 123456.1234'.formatThousands());
debugPrint('+ 1234567.12345 '.formatThousands());
debugPrint('-1234567 89.123456'.formatThousands());
debugPrint('+ 1234 567890.123 4567 '.formatThousands());
// Custom thousandth symbol
debugPrint('\n// Custom thousandth symbol ');
debugPrint(1234567.formatThousands(symbol: '_'));
debugPrint(1234567890.2.formatThousands(symbol: '、'));
// Retain a certain number of decimal places
debugPrint('\n// Retain a certain number of decimal places;Whether to round');
debugPrint(0.56.formatThousands(fractionDigits: 0));
debugPrint(0.56.formatThousands(fractionDigits: 0, round: false));
debugPrint(1234.5.formatThousands(fractionDigits: 2));
debugPrint(1234567.123490.formatThousands(fractionDigits: 4));
debugPrint(1234567.123490.formatThousands(fractionDigits: 4, round: false));
}
/// Desensitized
void desensitizedMethod() {
/// Phone number desensitization
final phone = '18801210283'.phoneDesensitized;
// Handling extra spaces
final phone1 = ' 18801210835 '.phoneDesensitized;
final phone2 = '188 0121 0283'.phoneDesensitized;
debugPrint('\n// Phone number desensitization');
debugPrint(phone); // 188****0283
debugPrint(phone1); // 188****0835
debugPrint(phone2); // 188****0283
/// Bank card number desensitization
final String bank16 = '6333234433554466'.bankDesensitized;
final String bank17 = '63332344335544661'.bankDesensitized;
final String bank19 = '6333234433554466234'.bankDesensitized;
debugPrint('\n// Bank card number desensitization');
debugPrint(bank16); // ****4466
debugPrint(bank17); // ****4661
debugPrint(bank19); // ****6234
// Mid
final String bankMid16 = '6333234433554466'.bankMidDesensitized;
final String bankMid17 = '63332344335544661'.bankMidDesensitized;
final String bankMid19 = '6333234433554466234'.bankMidDesensitized;
debugPrint('\n// Bank card number middle desensitization');
debugPrint(bankMid16); // 6333****4466
debugPrint(bankMid17); // 6333****4661
debugPrint(bankMid19); // 6333****6234
/// ID card number desensitization
final String id = '411122128995160537'.idDesensitized;
debugPrint('\n// ID card number desensitization');
debugPrint(id); // 411122********0537
}
void numberFormatMethod() {
// Phone number format
final String phone = '18702210183'.phoneFormat;
final String phone1 = '187 3221 0183'.phoneFormat;
final String phone2 = ' 187 42220183 '.phoneFormat;
debugPrint('\n/// Number Formatting');
debugPrint('// Phone number format');
debugPrint(phone); // 187 0221 0183
debugPrint(phone1); // 187 3221 0183
debugPrint(phone2); // 187 4222 0183
// Bank card number format
final String bank16 = '6222333444455551'.bankFormat;
final String bank17 = '62223334444555562'.bankFormat;
final String bank19 = '6222333444455556785'.bankFormat;
debugPrint('\n// Bank card number format');
debugPrint(bank16); // 6222 3334 4445 5551
debugPrint(bank17); // 6222 3334 4445 5556 2
debugPrint(bank19); // 6222 3334 4445 5556 785
// ID number format
final String id18 = '411422189806789226'.idFormat;
debugPrint('\n// ID number format');
debugPrint(id18); // 6222 3334 4445 5551
}
/// Widgets Test
class Widgets extends StatelessWidget {
const Widgets({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Widgets Test')),
body: Container(
alignment: Alignment.center,
child: const MultiFingerWidget(),
),
),
);
}
}
/// Extension of text style
class TestTextStyle extends StatelessWidget {
const TestTextStyle({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
const Text(
'idkit makes development easy!',
style: TextStyle(),
),
Text(
'idkit makes development easy!',
style: const TextStyle().bold,
),
Text(
'idkit makes development easy!',
style: const TextStyle().c(Colors.red),
),
Text(
'idkit makes development easy!',
style: const TextStyle().hexColor('#3A4E5F'),
),
Text(
'idkit makes development easy!',
style: const TextStyle().italic,
),
Text(
'idkit makes development easy!',
style: const TextStyle().fSize(20),
),
Text(
'idkit makes development easy!',
style: const TextStyle().h(3),
),
Text(
'idkit makes development easy!',
style: const TextStyle().lSpacing(3),
),
Text(
'idkit makes development easy!',
style: const TextStyle().wSpacing(5),
),
Text(
'idkit makes development easy!',
style: const TextStyle()
.medium
.italic
.c(Colors.cyan)
.fSize(20)
.h(3)
.lSpacing(3)
.wSpacing(5),
),
],
);
}
}
/// Padding
class PaddingTest extends StatelessWidget {
const PaddingTest({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.red,
child: Column(
children: <Widget>[
Container(
color: Colors.purple,
height: 100,
).insets(edgeInsets: const EdgeInsets.all(10)),
Container(
height: 100,
color: Colors.blue,
).insetsOnly(right: 120),
Container(
height: 100,
color: Colors.blue,
).insetsSymmetric(horizontal: 20),
CustomScrollView(
shrinkWrap: true,
slivers: [
SliverToBoxAdapter(
child: Container(
height: 50,
color: Colors.yellow,
),
).silverInsets(edgeInsets: const EdgeInsets.all(10)),
SliverToBoxAdapter(
child: Container(
height: 50,
color: Colors.purple,
),
).silverInsetsSymmetric(horizontal: 20),
SliverToBoxAdapter(
child: Container(
height: 50,
color: Colors.cyan,
),
).silverInsetsOnly(left: 20, top: 20),
],
)
],
),
);
}
}
/// Color
class ColorWidget extends StatelessWidget {
const ColorWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
// HEX
Color color = '#3767FE'.hexColor;
color = '#3767FE'.color;
Color color1 = '3707FE'.hexColor;
color1 = '3707FE'.color;
// AHEX
Color color2 = '#FF37670E'.aHexColor;
color2 = 'FF37670E'.aHexColor;
// HEXA
Color color3 = '#A067FEFF'.hexAColor;
color3 = 'A067FEFF'.hexAColor;
return Scaffold(
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
height: 100,
width: 100,
color: color,
),
Container(
height: 100,
width: 100,
color: color1,
),
Container(
height: 100,
width: 100,
color: color2,
),
Container(
height: 100,
width: 100,
color: color3,
),
],
),
),
);
}
}
/// Gap Test
class GapTest extends StatelessWidget {
const GapTest({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Container(height: 40, color: Colors.red),
20.vGap,
Container(height: 20, color: Colors.green),
50.vGap,
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(width: 100, height: 20, color: Colors.red),
100.hGap,
Container(height: 20, width: 100, color: Colors.pink),
],
)
],
);
}
}
/// Choice Widget
class ChoiceWidget extends StatelessWidget {
const ChoiceWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final List<ChoiceState<String>> list = ['王昭君', '甄姬', '妲己', '不知火舞', '貂蝉']
.map((e) => ChoiceState(data: e))
.toList();
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/// list
Text(
'IDKitChoice.list',
style: const TextStyle().bold.fSize(20),
),
IDKitChoice<String>.list(
type: ChoiceType.single,
cancelAll: false,
shrinkWrap: true,
sources: list,
mMaxCount: 2,
itemBuilder: (context, data) {
final color = data.state ? Colors.red : Colors.blue;
return Container(
width: 200,
color: color,
alignment: Alignment.center,
child: Text(data.data ?? ''),
);
},
valueCall: (ChoiceState<String> result) {
debugPrint(result.data);
},
).insetsOnly(bottom: 20),
/// listSeparated
Text(
'IDKitChoice.listSeparated',
style: const TextStyle().bold.fSize(20),
),
IDKitChoice<String>.listSeparated(
type: ChoiceType.multiple,
cancelAll: false,
shrinkWrap: true,
sources: list,
mMaxCount: 2,
separatorBuilder: (_, ChoiceState<String> result) {
return const Divider(
height: 2,
color: Colors.red,
thickness: 2,
);
},
itemBuilder: (context, data) {
final color = data.state ? Colors.red : Colors.blue;
return Container(
width: 200,
color: color,
alignment: Alignment.center,
child: Text(data.data ?? ''),
);
},
multipleValueCall: (list) {
debugPrint(list.toString());
},
).insetsOnly(bottom: 20),
/// warp
Text(
'IDKitChoice.warp',
style: const TextStyle().bold.fSize(20),
),
IDKitChoice<String>.warp(
type: ChoiceType.single,
sources: list,
itemBuilder: (context, data) {
final color = data.state ? Colors.red : Colors.blue;
return ColoredBox(
color: color,
child: Text(data.data ?? ''),
).insetsOnly(right: 10);
},
valueCall: (ChoiceState<String> result) {
debugPrint(result.data);
},
).insetsOnly(bottom: 20),
/// grid
Text(
'IDKitChoice.grid',
style: const TextStyle().bold.fSize(20),
),
IDKitChoice<String>.grid(
type: ChoiceType.single,
sources: list,
cancelAll: false,
shrinkWrap: true,
itemBuilder: (context, data) {
final color = data.state ? Colors.red : Colors.blue;
return Container(
width: 20,
height: 20,
color: color,
alignment: Alignment.center,
child: Text(data.data ?? ''),
);
},
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
childAspectRatio: 3,
),
valueCall: (ChoiceState<String> result) {
debugPrint(result.data);
},
).insetsOnly(bottom: 20),
],
);
}
}
/// multi-finger detection
class MultiFingerWidget extends StatelessWidget {
const MultiFingerWidget({super.key});
@override
Widget build(BuildContext context) {
return IDKitMultiFingerRecognizer(
fingerRecognizerCall: (p0) {
log('$p0');
},
child: GestureDetector(
onTap: () {
log('GestureDetector -- onTap');
},
child: Container(
color: Colors.red,
height: 300,
width: 300,
),
),
);
}
}