diff --git a/example/lib/example_extension.dart b/example/lib/example_extension.dart new file mode 100644 index 0000000..989fbcf --- /dev/null +++ b/example/lib/example_extension.dart @@ -0,0 +1,47 @@ +import 'package:ansu_ui/ansu_ui.dart'; +import 'package:flutter/material.dart'; +import 'package:ansu_ui/ansu_ui.dart'; + +class ExampleExtension extends StatefulWidget { + ExampleExtension({Key key}) : super(key: key); + + @override + _ExampleExtensionState createState() => _ExampleExtensionState(); +} + +class _ExampleExtensionState extends State { + @override + Widget build(BuildContext context) { + return ASScaffold( + title: 'Extension', + body: ListView( + children: [ + ListTile( + title: Text('.phone'), + trailing: Text('17855823545 => ${'17855823545'.phone}'), + ), + ListTile( + title: Text('.comma'), + trailing: Text('1000 => ${1000.comma}'), + ), + ListTile( + title: Text('.comma'), + trailing: Text('1000000 => ${1000000.comma}'), + ), + ListTile( + title: Text('.comma'), + trailing: Text('100.00 => ${100.00.comma}'), + ), + ListTile( + title: Text('.comma'), + trailing: Text('0.123456 => ${0.123456.comma}'), + ), + ListTile( + title: Text('.comma'), + trailing: Text('123456.789 => ${123456.789.comma}'), + ), + ], + ), + ); + } +} diff --git a/example/lib/main_home.dart b/example/lib/main_home.dart index f7362dc..58f4ac4 100644 --- a/example/lib/main_home.dart +++ b/example/lib/main_home.dart @@ -3,6 +3,7 @@ import 'package:example/example_bottom_button.dart'; import 'package:example/example_box.dart'; import 'package:example/example_dialog.dart'; import 'package:example/example_drawer.dart'; +import 'package:example/example_extension.dart'; import 'package:example/example_listtile.dart'; import 'package:example/example_refresh.dart'; import 'package:example/example_tag.dart'; @@ -78,6 +79,10 @@ class _MainHomeState extends State { title: '选框 Box', onPressed: () => Get.to(ExampleBox()), ), + ASButton.info( + title: '插件 Extension', + onPressed: () => Get.to(ExampleExtension()), + ), ], ); } diff --git a/lib/ansu_ui.dart b/lib/ansu_ui.dart index 4fd0d8f..71b3c23 100644 --- a/lib/ansu_ui.dart +++ b/lib/ansu_ui.dart @@ -37,8 +37,9 @@ export 'text_field/as_search_text_field.dart'; export 'utils/screen_adapter.dart'; -export 'extension/sizedbox_extension.dart'; -export 'extension/separate_extension.dart'; +export 'extension/num_extension.dart'; +export 'extension/widget_extension.dart'; +export 'extension/string_extension.dart'; //`BOTTOM` is external lib export 'package:flutter_screenutil/flutter_screenutil.dart'; diff --git a/lib/dialog/as_dialog.dart b/lib/dialog/as_dialog.dart index dd9cb3c..e442bd3 100644 --- a/lib/dialog/as_dialog.dart +++ b/lib/dialog/as_dialog.dart @@ -2,7 +2,7 @@ import 'package:ansu_ui/styles/as_colors.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:ansu_ui/extension/sizedbox_extension.dart'; +import 'package:ansu_ui/extension/num_extension.dart'; class ASDialog extends StatefulWidget { final bool close; diff --git a/lib/extension/num_extension.dart b/lib/extension/num_extension.dart new file mode 100644 index 0000000..23ace36 --- /dev/null +++ b/lib/extension/num_extension.dart @@ -0,0 +1,43 @@ +import 'package:ansu_ui/ansu_ui.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +extension NumExt on num { + ///获取宽 SizedBox + Widget get wb => SizedBox(width: this.w); + + ///获取高 SizedBox + Widget get hb => SizedBox(height: this.w); + + ///圆角 + BorderRadius get radius => BorderRadius.circular(this.w); + + ///每三位数加逗号 + String get comma { + String _num = this.toString(); + String str = ''; + int count = 0; + if (_num.indexOf('.') == -1) { + for (var i = _num.length - 1; i >= 0; i--) { + if (count % 3 == 0 && count != 0) { + str = _num.substring(i, i + 1) + ',' + str; + } else { + str = _num.substring(i, i + 1) + str; + } + count++; + } + return str; + } else { + for (var i = _num.indexOf('.') - 1; i >= 0; i--) { + if (count % 3 == 0 && count!= 0) { + str = _num.substring(i, i + 1) + ',' + str; + } else { + str = _num.substring(i, i + 1) + str; + } + count++; + } + str=str+(_num.substring(_num.indexOf('.'),_num.length)); + return str; + } + } +} diff --git a/lib/extension/sizedbox_extension.dart b/lib/extension/sizedbox_extension.dart deleted file mode 100644 index 5c5a0b9..0000000 --- a/lib/extension/sizedbox_extension.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:ansu_ui/ansu_ui.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_screenutil/flutter_screenutil.dart'; - -extension NumExt on num { - ///获取宽 SizedBox - Widget get wb => SizedBox(width: this.w); - - ///获取高 SizedBox - Widget get hb => SizedBox(height: this.w); - - ///圆角 - BorderRadius get radius => BorderRadius.circular(this.w); -} diff --git a/lib/extension/string_extension.dart b/lib/extension/string_extension.dart new file mode 100644 index 0000000..20ddbf7 --- /dev/null +++ b/lib/extension/string_extension.dart @@ -0,0 +1,10 @@ +extension PhoneExt on String { + String get phone { + ///电话号码加分隔线 + return (this.substring(0, 3) + + '-' + + this.substring(3, 7) + + '-' + + this.substring(7, 11)); + } +} diff --git a/lib/extension/separate_extension.dart b/lib/extension/widget_extension.dart similarity index 100% rename from lib/extension/separate_extension.dart rename to lib/extension/widget_extension.dart diff --git a/lib/list_tile/as_option_tile_item.dart b/lib/list_tile/as_option_tile_item.dart index 9c7a84d..2c96915 100644 --- a/lib/list_tile/as_option_tile_item.dart +++ b/lib/list_tile/as_option_tile_item.dart @@ -1,7 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:ansu_ui/extension/sizedbox_extension.dart'; +import 'package:ansu_ui/extension/num_extension.dart'; class ASOptionTileItem extends StatelessWidget { final Widget leading;