Compare commits

..

No commits in common. 'master' and 'null_safety' have entirely different histories.

@ -1,4 +1,3 @@
{
"flutterSdkVersion": "2.8.1",
"flavors": {}
"flutterSdkVersion": "stable"
}

@ -1,3 +1,3 @@
{
"dart.flutterSdkPath": "/Users/zhangmeng/fvm/versions/2.0.2"
"dart.flutterSdkPath": "/Users/akufe/fvm/versions/stable"
}

@ -1,4 +0,0 @@
{
"flutterSdkVersion": "2.2.0",
"flavors": {}
}

@ -14,20 +14,20 @@ class CodeStyle extends InheritedWidget {
this.punctuationStyle,
this.classStyle,
this.constantStyle,
required Widget child,
@required Widget child,
}) : super(child: child);
final TextStyle? baseStyle;
final TextStyle? numberStyle;
final TextStyle? commentStyle;
final TextStyle? keywordStyle;
final TextStyle? stringStyle;
final TextStyle? punctuationStyle;
final TextStyle? classStyle;
final TextStyle? constantStyle;
final TextStyle baseStyle;
final TextStyle numberStyle;
final TextStyle commentStyle;
final TextStyle keywordStyle;
final TextStyle stringStyle;
final TextStyle punctuationStyle;
final TextStyle classStyle;
final TextStyle constantStyle;
static CodeStyle of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<CodeStyle>()!;
return context.dependOnInheritedWidgetOfExactType<CodeStyle>();
}
@override
@ -40,4 +40,4 @@ class CodeStyle extends InheritedWidget {
oldWidget.punctuationStyle != punctuationStyle ||
oldWidget.classStyle != classStyle ||
oldWidget.constantStyle != constantStyle;
}
}

@ -6,12 +6,12 @@ import 'code_view.dart';
class BasePage extends StatelessWidget {
final String title;
final Widget body;
final List<Widget>? actions;
final CodeBuilder? codeBuilder;
final List<Widget> actions;
final CodeBuilder codeBuilder;
const BasePage(
{Key? key,
required this.title,
required this.body,
{Key key,
@required this.title,
@required this.body,
this.actions,
this.codeBuilder})
: super(key: key);

@ -4,10 +4,10 @@ import 'package:get/get.dart';
import 'code_view.dart';
class CodeTile extends StatelessWidget {
final Widget? title;
final Widget? subTitle;
final CodeBuilder? builder;
const CodeTile({Key? key, this.title, this.subTitle, this.builder})
final Widget title;
final Widget subTitle;
final CodeBuilder builder;
const CodeTile({Key key, this.title, this.subTitle, this.builder})
: super(key: key);
@override

@ -5,9 +5,9 @@ import '../codeviewer/code_style.dart';
typedef CodeBuilder = TextSpan Function(BuildContext context);
class CodeView extends StatefulWidget {
final CodeBuilder? text;
final CodeBuilder text;
final String title;
CodeView({Key? key, required this.text, this.title = 'Code'})
CodeView({Key key, @required this.text, this.title = 'Code'})
: super(key: key);
@override
@ -33,7 +33,7 @@ class _CodeViewState extends State<CodeView> {
classStyle: codeTheme.copyWith(color: Colors.yellow),
constantStyle: codeTheme.copyWith(color: Colors.pink),
child:
Builder(builder: (context) => Text.rich(widget.text!(context))),
Builder(builder: (context) => Text.rich(widget.text(context))),
)),
);
}

@ -5,13 +5,13 @@ import 'package:get/get.dart';
class ExampleScaffold extends StatelessWidget {
final String title;
final CodeBuilder? text;
final CodeBuilder text;
final List<Widget> children;
const ExampleScaffold({
Key? key,
required this.title,
Key key,
@required this.title,
this.text,
required this.children,
@required this.children,
}) : super(key: key);
@override

@ -2,9 +2,9 @@ import 'package:ansu_ui/ansu_ui.dart';
import 'package:flutter/material.dart';
class ColorObject {
Color? color;
String? name;
String? codeName;
Color color;
String name;
String codeName;
ColorObject({
this.color,
this.name,

@ -1,61 +0,0 @@
import 'package:ansu_ui/extension/list_extension.dart';
import 'package:example/codeviewer/code_segments.dart';
import 'package:example/component/example_scaffold.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:velocity_x/velocity_x.dart';
class ExampleListExt extends StatefulWidget {
const ExampleListExt({Key? key}) : super(key: key);
@override
_ExampleListExtState createState() => _ExampleListExtState();
}
class _ExampleListExtState extends State<ExampleListExt> {
@override
Widget build(BuildContext context) {
return ExampleScaffold(
title: 'String Ext',
text: (context) => CodeSegments.stringExt(context),
children: [
Container(
color: Colors.blue,
child: Column(
children: [
Container(
width: double.infinity,
height: 50.w,
color: Colors.red,
child: Text('1'),
),
Visibility(
visible: true,
child: Container(
width: double.infinity,
height: 50.w,
color: Colors.red,
child: Text('2'),
),
),
Offstage(
offstage: true,
child: Container(
width: double.infinity,
height: 50.w,
color: Colors.red,
child: Text('2'),
),
),
Container(
width: double.infinity,
height: 50.w,
color: Colors.red,
child: Text('3'),
),
].sepWidget(separate: 10.w.heightBox),
),
),
]);
}
}

@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class ExampleNumExt extends StatefulWidget {
ExampleNumExt({Key? key}) : super(key: key);
ExampleNumExt({Key key}) : super(key: key);
@override
_ExampleNumExtState createState() => _ExampleNumExtState();
@ -103,17 +103,6 @@ class _ExampleNumExtState extends State<ExampleNumExt> {
child: Container(color: Colors.green),
),
),
ListTile(title: Text('add0')),
ListTile(
leading: Chip(label: Text('.add0')),
title: Text('1'),
subtitle: Text(1.add0(3)),
),
ListTile(
leading: Chip(label: Text('.add0')),
title: Text('1000'),
subtitle: Text(1000.add0(3)),
),
// END
],
);

@ -4,7 +4,7 @@ import 'package:example/component/example_scaffold.dart';
import 'package:flutter/material.dart';
class ExampleStringExt extends StatefulWidget {
ExampleStringExt({Key? key}) : super(key: key);
ExampleStringExt({Key key}) : super(key: key);
@override
_ExampleStringExtState createState() => _ExampleStringExtState();

@ -37,14 +37,14 @@ class MyApp extends StatelessWidget {
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key}) : super(key: key);
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
TabController? _tabController;
TabController _tabController;
@override
void initState() {
@ -56,9 +56,9 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
print(Theme.of(context).textTheme.headline1!.fontFamily);
print(Theme.of(context).textTheme.headline1.fontFamily);
return ASScaffold(
leading: navigator!.canPop()
leading: navigator.canPop()
? IconButton(
icon: Icon(Icons.backpack, color: Colors.black),
onPressed: () {},
@ -74,7 +74,7 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
],
),
bottomNavigationBar: ASNavigationBar(
controller: _tabController!,
controller: _tabController,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home),

@ -1,12 +1,11 @@
import 'package:example/extension/example_list_ext.dart';
import 'package:example/extension/example_num_ext.dart';
import 'package:example/extension/example_string_ext.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class MainExtention extends StatefulWidget {
MainExtention({Key? key}) : super(key: key);
MainExtention({Key key}) : super(key: key);
@override
_MainExtentionState createState() => _MainExtentionState();
@ -14,9 +13,9 @@ class MainExtention extends StatefulWidget {
class _MainExtentionState extends State<MainExtention> {
_innerButton({
VoidCallback? onPressed,
required Widget child,
Widget? icon,
VoidCallback onPressed,
Widget child,
Widget icon,
}) {
return TextButton(
onPressed: onPressed,
@ -45,11 +44,6 @@ class _MainExtentionState extends State<MainExtention> {
child: Text('String Ext'),
icon: Icon(Icons.text_fields),
),
_innerButton(
onPressed: () => Get.to(ExampleListExt()),
child: Text('list Ext'),
icon: Icon(Icons.text_fields),
),
],
);
}

@ -1,9 +1,7 @@
import 'package:example/widgets/example_bottom_button.dart';
import 'package:example/widgets/example_box.dart';
import 'package:example/widgets/example_button.dart';
import 'package:example/widgets/example_chart.dart';
import 'package:example/widgets/example_dialog.dart';
import 'package:example/widgets/example_divider.dart';
import 'package:example/widgets/example_drawer.dart';
import 'package:example/widgets/example_listtile.dart';
import 'package:example/widgets/example_numeric_button.dart';
@ -17,11 +15,12 @@ import 'package:example/widgets/example_tag.dart';
import 'package:example/widgets/example_text_field.dart';
import 'package:example/widgets/example_toast.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class MainHome extends StatefulWidget {
MainHome({Key? key}) : super(key: key);
MainHome({Key key}) : super(key: key);
@override
_MainHomeState createState() => _MainHomeState();
@ -29,15 +28,15 @@ class MainHome extends StatefulWidget {
class _MainHomeState extends State<MainHome> {
_innerButton({
VoidCallback? onPressed,
required String title,
IconData? icon,
VoidCallback onPressed,
String title,
IconData icon,
}) {
return TextButton(
onPressed: onPressed,
child: Row(
children: [
Expanded(child: icon != null ? Icon(icon) : SizedBox()),
Expanded(child: Icon(icon) ?? SizedBox()),
Text(title),
Spacer(),
],
@ -110,14 +109,6 @@ class _MainHomeState extends State<MainHome> {
title: 'Toast',
onPressed: () => Get.to(ExampleToast()),
),
_innerButton(
title: 'Divider',
onPressed: () => Get.to(ExampleDivider()),
),
_innerButton(
title: 'chart',
onPressed: () => Get.to(ExampleChart()),
),
],
);
}

@ -4,7 +4,7 @@ import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class MainUtils extends StatefulWidget {
MainUtils({Key? key}) : super(key: key);
MainUtils({Key key}) : super(key: key);
@override
_MainUtilsState createState() => _MainUtilsState();
@ -12,9 +12,9 @@ class MainUtils extends StatefulWidget {
class _MainUtilsState extends State<MainUtils> {
_innerButton({
VoidCallback? onPressed,
required Widget child,
Widget? icon,
VoidCallback onPressed,
Widget child,
Widget icon,
}) {
return TextButton(
onPressed: onPressed,

@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
import 'package:velocity_x/velocity_x.dart';
class ExampleCameraView extends StatefulWidget {
ExampleCameraView({Key? key}) : super(key: key);
ExampleCameraView({Key key}) : super(key: key);
@override
_ExampleCameraViewState createState() => _ExampleCameraViewState();
@ -24,8 +24,8 @@ class _ExampleCameraViewState extends State<ExampleCameraView> {
ListTile(
title: 'CameraView'.text.make(),
onTap: () async {
File? file = await camView(context, title: 'TEST');
print(await file?.length());
File file = await camView(context, title: 'TEST');
print(await file.length());
},
),
// END

@ -8,7 +8,7 @@ import 'package:get/get.dart';
class ExampleBottomButton extends StatefulWidget {
ExampleBottomButton({Key? key}) : super(key: key);
ExampleBottomButton({Key key}) : super(key: key);
@override
_ExampleBottomButtonState createState() => _ExampleBottomButtonState();

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class ExampleBox extends StatefulWidget {
ExampleBox({Key? key}) : super(key: key);
ExampleBox({Key key}) : super(key: key);
@override
_ExampleBoxState createState() => _ExampleBoxState();

@ -7,7 +7,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
class ExampleButton extends StatefulWidget {
ExampleButton({Key? key}) : super(key: key);
ExampleButton({Key key}) : super(key: key);
@override
_ExampleButtonState createState() => _ExampleButtonState();
@ -69,12 +69,6 @@ class _ExampleButtonState extends State<ExampleButton> {
trailing: ASButton.order(
title: '立即下单',
)),
ListTile(
title: Text('yellowHollow'),
trailing: ASButton.yellowHollow(
title: '立即下单',
onPressed: () {},
)),
SizedBox(height: 12.w),
Row(
children: [
@ -153,25 +147,25 @@ class _ExampleButtonState extends State<ExampleButton> {
groupValue: groupValue,
value: 0,
title: '候选0',
onTap: (dynamic _) => setState(() => groupValue = 0),
onTap: (_) => setState(() => groupValue = 0),
),
ASRadioButton(
groupValue: groupValue,
value: 1,
title: '候选1',
onTap: (dynamic _) => setState(() => groupValue = 1),
onTap: (_) => setState(() => groupValue = 1),
),
ASRadioButton(
groupValue: groupValue,
value: 2,
title: '候选2',
onTap: (dynamic _) => setState(() => groupValue = 2),
onTap: (_) => setState(() => groupValue = 2),
),
ASRadioButton(
groupValue: groupValue,
value: 3,
title: '候选3',
onTap: (dynamic _) => setState(() => groupValue = 3),
onTap: (_) => setState(() => groupValue = 3),
),
],
),

@ -1,48 +0,0 @@
import 'package:ansu_ui/ansu_ui.dart';
import 'package:ansu_ui/chart/circle_chart_widget.dart';
import 'package:example/codeviewer/code_segments.dart';
import 'package:example/common/code_view.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ExampleChart extends StatefulWidget {
const ExampleChart({Key? key}) : super(key: key);
@override
_ExampleChartState createState() => _ExampleChartState();
}
class _ExampleChartState extends State<ExampleChart> {
@override
Widget build(BuildContext context) {
return ASScaffold(
title: 'chart',
actions: [
IconButton(
icon: Icon(Icons.code, color: Colors.black54),
onPressed: () => Get.to(CodeView(
text: (context) => CodeSegments.button(context),
)),
),
],
body: ListView(
children: [
20.hb,
ListTile(
title: Text('circle chart'),
trailing: Container(
width: 50.w,
height: 50.w,
child: CircleChart(
size: 40.w,
color: Colors.red,
aboveStrokeWidth: 10.w,
core: '65%'.text.size(20.sp).color(kTextColor).make(),
aspectRato: 0.65,
),
)),
],
),
);
}
}

@ -1,84 +0,0 @@
import 'package:ansu_ui/ansu_ui.dart';
import 'package:ansu_ui/divider/as_dotted_divider.dart';
import 'package:example/codeviewer/code_segments.dart';
import 'package:example/common/code_view.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ExampleDivider extends StatefulWidget {
ExampleDivider({Key? key}) : super(key: key);
@override
_ExampleDividerState createState() => _ExampleDividerState();
}
class _ExampleDividerState extends State<ExampleDivider> {
@override
Widget build(BuildContext context) {
return ASScaffold(
title: '分割线',
actions: [
IconButton(
icon: Icon(Icons.code, color: Colors.black54),
onPressed: () => Get.to(CodeView(
text: (context) => CodeSegments.button(context),
)),
),
],
body: Center(
child: Column(
children: [
Container(
width: double.infinity,
height: 50.w,
color: Colors.red,
child: 'ASDivider'.text.make(),
),
ASDivider(
color: Colors.black,
),
Row(
children: [
Container(
height: 50.w,
color: Colors.red,
).expand(),
ASVDivider(),
Container(
height: 50.w,
color: Colors.red,
).expand(),
],
),
ASDivider(),
Container(
width: double.infinity,
height: 50.w,
color: Colors.red,
child: 'ASDottedDivider'.text.make(),
),
ASDottedDivider.horizontal(
color: Colors.black,
),
Container(
height: 100.w,
child: Row(
children: [
Container(
color: Colors.red,
).expand(),
ASDottedDivider.vertical(
color: Colors.black,
),
Container(
color: Colors.red,
).expand(),
],
),
),
],
),
),
);
}
}

@ -2,7 +2,7 @@ import 'package:ansu_ui/ansu_ui.dart';
import 'package:flutter/material.dart';
class ExampleDrawer extends StatefulWidget {
ExampleDrawer({Key? key}) : super(key: key);
ExampleDrawer({Key key}) : super(key: key);
@override
_ExampleDrawerState createState() => _ExampleDrawerState();

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class ExampleListTile extends StatefulWidget {
ExampleListTile({Key? key}) : super(key: key);
ExampleListTile({Key key}) : super(key: key);
@override
_ExampleListTileState createState() => _ExampleListTileState();
@ -20,12 +20,6 @@ class _ExampleListTileState extends State<ExampleListTile> {
SizedBox(
height: 8.w,
),
Row(
children: [
'ASOptionTile'.text.size(18.sp).black.make(),
'-ASListTile'.text.size(14.sp).black.make()
],
),
ASOptionTile(
items: [
ASListTile(
@ -60,12 +54,6 @@ class _ExampleListTileState extends State<ExampleListTile> {
],
),
20.hb,
Row(
children: [
'ASOptionTile'.text.size(18.sp).black.make(),
'-ASOptionTileItem'.text.size(14.sp).black.make()
],
),
ASOptionTile(
items: List.generate(
3,
@ -77,24 +65,12 @@ class _ExampleListTileState extends State<ExampleListTile> {
),
),
20.hb,
Row(
children: [
'ASOptionTile.single'.text.size(18.sp).black.make(),
'-ASEditTile'.text.size(14.sp).black.make()
],
),
ASOptionTile.single(
item: ASEditTile(
title: Text('TEST'),
),
),
20.hb,
Row(
children: [
'ASOptionTile.single'.text.size(18.sp).black.make(),
'-ASVerticalTileItem'.text.size(14.sp).black.make()
],
),
ASOptionTile.single(
item: ASVerticalTileItem(
title: Text('AS Vertical Tile'),
@ -102,9 +78,6 @@ class _ExampleListTileState extends State<ExampleListTile> {
),
),
20.hb,
Row(
children: ['ASOptionTile.single'.text.size(18.sp).black.make()],
),
ASOptionTile(
leading: '基础信息',
items: [],

@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ExampleNumericButton extends StatefulWidget {
ExampleNumericButton({Key? key}) : super(key: key);
ExampleNumericButton({Key key}) : super(key: key);
@override
_ExampleNumericButtonState createState() => _ExampleNumericButtonState();
@ -19,7 +19,6 @@ class _ExampleNumericButtonState extends State<ExampleNumericButton> {
}
int _pickedValue = 0;
@override
Widget build(BuildContext context) {
return ASScaffold(
@ -61,6 +60,7 @@ class _ExampleNumericButtonState extends State<ExampleNumericButton> {
},
),
),
// END
],
);

@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ExamplePicker extends StatefulWidget {
ExamplePicker({Key? key}) : super(key: key);
ExamplePicker({Key key}) : super(key: key);
@override
_ExamplePickerState createState() => _ExamplePickerState();
@ -36,18 +36,18 @@ class _ExamplePickerState extends State<ExamplePicker> {
// BEGIN picker
ListTile(
title: Text('日期选择器'),
subtitle: Text('DatePicker/asDatePicker'),
subtitle: Text('DatePicker'),
trailing: ASButton(
title: '日期选择器',
onPressed: () async {
DateTime? date = await showAsDatePicker(context);
DateTime date = await asDatePicker(context);
Get.snackbar(date.toString(), 'MESSAGE');
},
),
),
ListTile(
title: Text('自定义选择器'),
subtitle: Text('CustomPicker/ASPickerBox'),
subtitle: Text('CustomPicker'),
trailing: ASButton(
title: '自定义选择器',
onPressed: () async {
@ -60,7 +60,7 @@ class _ExamplePickerState extends State<ExamplePicker> {
),
ListTile(
title: Text('时间区间选择器'),
subtitle: Text('DateRangePicker/show2DatePicker'),
subtitle: Text('DateRangePicker'),
trailing: ASButton(
title: '时间区间选择器',
onPressed: () async {
@ -71,22 +71,22 @@ class _ExamplePickerState extends State<ExamplePicker> {
),
ListTile(
title: Text('图片选择器'),
subtitle: Text('ImagePicker/camView'),
subtitle: Text('ImagePicker'),
trailing: ASButton(
title: '图片选择器',
onPressed: () async {
File? file = await camView(context, title: '图片选择器');
print(file?.lengthSync());
File file = await camView(context, title: '图片选择器');
print(file.lengthSync());
},
),
),
ListTile(
title: Text('图片选择器'),
subtitle: Text('ImagePicker/pickImageFile'),
subtitle: Text('ImagePicker'),
trailing: ASButton(
title: '图片选择器',
onPressed: () async {
File? file = await pickImageFile();
File file = await pickImageFile();
},
),
),

@ -3,14 +3,14 @@ import 'package:flutter/material.dart';
import 'package:velocity_x/velocity_x.dart';
class ExamplePopUpMenu extends StatefulWidget {
ExamplePopUpMenu({Key? key}) : super(key: key);
ExamplePopUpMenu({Key key}) : super(key: key);
@override
_ExamplePopUpMenuState createState() => _ExamplePopUpMenuState();
}
class _ExamplePopUpMenuState extends State<ExamplePopUpMenu> {
int? _value;
int _value;
@override
Widget build(BuildContext context) {
return ASScaffold(
@ -25,7 +25,7 @@ class _ExamplePopUpMenuState extends State<ExamplePopUpMenu> {
return TextButton(
child: '$_value'.text.make(),
onPressed: () async {
int? result = await showASPopUpMenu<int>(
int result = await showASPopUpMenu<int>(
context: context,
initValue: _value,
items: List.generate(

@ -2,7 +2,7 @@ import 'package:ansu_ui/ansu_ui.dart';
import 'package:flutter/material.dart';
class ExampleRefresh extends StatefulWidget {
ExampleRefresh({Key? key}) : super(key: key);
ExampleRefresh({Key key}) : super(key: key);
@override
_ExampleRefreshState createState() => _ExampleRefreshState();

@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ExampleScaffold extends StatefulWidget {
ExampleScaffold({Key? key}) : super(key: key);
ExampleScaffold({Key key}) : super(key: key);
@override
_ExampleScaffoldState createState() => _ExampleScaffoldState();
@ -14,15 +14,15 @@ class ExampleScaffold extends StatefulWidget {
class _ExampleScaffoldState extends State<ExampleScaffold>
with TickerProviderStateMixin {
late TabController _tabController;
List<String>? tabs;
TabController _tabController;
List<String> tabs;
@override
void initState() {
super.initState();
tabs = List.generate(10, (index) => 'Tab $index');
_tabController = TabController(
length: tabs!.length,
length: tabs.length,
vsync: this,
);
}

@ -4,7 +4,7 @@ import 'package:ansu_ui/ansu_ui.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class ExampleStyleColor extends StatefulWidget {
ExampleStyleColor({Key? key}) : super(key: key);
ExampleStyleColor({Key key}) : super(key: key);
@override
_ExampleStyleColorState createState() => _ExampleStyleColorState();
@ -26,7 +26,7 @@ class _ExampleStyleColorState extends State<ExampleStyleColor> {
],
),
),
subtitle: Text(object.codeName!),
subtitle: Text(object.codeName),
trailing: Card(
color: object.color,
child: SizedBox(height: 50.w, width: 50.w),

@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ExampleTabBar extends StatefulWidget {
ExampleTabBar({Key? key}) : super(key: key);
ExampleTabBar({Key key}) : super(key: key);
@override
_ExampleTabBarState createState() => _ExampleTabBarState();
@ -13,10 +13,10 @@ class ExampleTabBar extends StatefulWidget {
class _ExampleTabBarState extends State<ExampleTabBar>
with TickerProviderStateMixin {
TabController? _tabController1;
TabController? _tabController2;
TabController? _tabController3;
TabController? _tabController4;
TabController _tabController1;
TabController _tabController2;
TabController _tabController3;
TabController _tabController4;
@override
void initState() {
super.initState();
@ -58,23 +58,23 @@ class _ExampleTabBarState extends State<ExampleTabBar>
// BEGIN tabBar
ASTabBar(
items: ['全部', 'Part1', 'Part2'],
controller: _tabController1!,
controller: _tabController1,
),
ASTabBar(
items: List.generate(5, (index) => 'Tab $index'),
controller: _tabController2!,
controller: _tabController2,
),
ASTabBar(
isScrollable: true,
items: List.generate(10, (index) => 'Tab $index'),
controller: _tabController3!,
controller: _tabController3,
),
ASTabBar.tag(
isScrollable: true,
tabItems: List.generate(10, (index) => 'Tab $index')
.map((e) => ASTabBarItem(title: e, tag: e))
.toList(),
controller: _tabController4!,
controller: _tabController4,
),
// END

@ -6,7 +6,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:velocity_x/velocity_x.dart';
class ExampleTag extends StatefulWidget {
ExampleTag({Key? key}) : super(key: key);
ExampleTag({Key key}) : super(key: key);
@override
_ExampaleTagState createState() => _ExampaleTagState();
@ -64,7 +64,7 @@ class _ExampaleTagState extends State<ExampleTag> {
),
ListTile(
onTap: () => setState(() => _checked = !_checked),
title: Text('ASCheckTag'),
title: Text('ASCheckedTag'),
trailing: ASCheckTag(
checked: _checked,
text: 'TAG'.text.make(),

@ -2,14 +2,14 @@ import 'package:ansu_ui/ansu_ui.dart';
import 'package:flutter/material.dart';
class ExampleTextFiled extends StatefulWidget {
ExampleTextFiled({Key? key}) : super(key: key);
ExampleTextFiled({Key key}) : super(key: key);
@override
_ExampleTextFiledState createState() => _ExampleTextFiledState();
}
class _ExampleTextFiledState extends State<ExampleTextFiled> {
TextEditingController? _controller;
TextEditingController _controller;
@override
Widget build(BuildContext context) {
return ASScaffold(
@ -17,13 +17,10 @@ class _ExampleTextFiledState extends State<ExampleTextFiled> {
backgroundColor: kForegroundColor,
body: ListView(
children: [
'ASSearchTextField'.text.size(18.sp).make(),
ASSearchTextField(
controller: _controller,
hintText: '搜索',
),
40.w.heightBox,
'ASSearchTextField.button'.text.size(18.sp).black.make(),
ASSearchTextField.button(
hintText: '搜索',
onPressed: () {},

@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:velocity_x/velocity_x.dart';
class ExampleToast extends StatelessWidget {
const ExampleToast({Key? key}) : super(key: key);
const ExampleToast({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {

@ -7,100 +7,107 @@ packages:
path: "."
ref: HEAD
resolved-ref: d724abf91595f58ed58f6c722ebe60acdb750c67
url: "https://git.oa00.com/flutter_pub/animated_collection.git"
url: "http://159.75.73.143:8080/laiiihz/animated_collection.git"
source: git
version: "0.0.1"
animator:
dependency: transitive
description:
name: animator
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.0"
ansu_ui:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
version: "1.0.0"
version: "0.0.4"
args:
dependency: "direct main"
description:
name: args
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.1"
version: "2.0.0"
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.9.0"
version: "2.5.0"
auto_size_text_pk:
dependency: transitive
description:
name: auto_size_text_pk
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.0"
bot_toast:
dependency: transitive
description:
name: bot_toast
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.3"
version: "4.0.1"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.5"
version: "0.3.0"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.15.0"
cross_file:
dependency: transitive
description:
name: cross_file
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.3+2"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.5"
version: "1.0.2"
expandable:
dependency: transitive
description:
name: expandable
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.0.1"
file:
dependency: transitive
description:
name: file
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.1.4"
version: "6.1.0"
flutter:
dependency: "direct main"
description: flutter
@ -110,9 +117,9 @@ packages:
dependency: transitive
description:
name: flutter_easyrefresh
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.2"
version: "2.2.1"
flutter_localizations:
dependency: "direct main"
description: flutter
@ -122,16 +129,16 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.7"
version: "2.0.1"
flutter_screenutil:
dependency: transitive
description:
name: flutter_screenutil
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.5.4"
version: "5.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
@ -141,100 +148,107 @@ packages:
dependency: "direct main"
description:
name: get
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.6.5"
version: "4.1.4"
glob:
dependency: transitive
description:
name: glob
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.0"
version: "2.0.1"
grinder:
dependency: "direct main"
description:
name: grinder
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.9.1"
version: "0.9.0"
http:
dependency: transitive
description:
name: http
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.13.5"
version: "0.13.1"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.1"
version: "4.0.0"
image_picker:
dependency: transitive
description:
name: image_picker
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.7.5+4"
version: "0.7.4"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.8"
version: "2.0.0"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.6.1"
version: "2.0.1"
intl:
dependency: transitive
description:
name: intl
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.17.0"
js:
dependency: transitive
description:
name: js
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.3"
lpinyin:
dependency: transitive
description:
name: lpinyin
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.3"
version: "2.0.1"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.7.0"
version: "1.3.0"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.8.0"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.11.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.3"
version: "2.0.0"
sky_engine:
dependency: transitive
description: flutter
@ -244,51 +258,58 @@ packages:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.9.1"
version: "1.8.1"
states_rebuilder:
dependency: transitive
description:
name: states_rebuilder
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.0+1"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.1"
version: "1.1.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.1"
version: "1.2.0"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.1"
version: "2.1.0"
velocity_x:
dependency: transitive
description:
name: velocity_x
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.5.1"
version: "2.6.1"
vxstate:
dependency: transitive
description:
name: vxstate
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
version: "2.0.1"
sdks:
dart: ">=2.15.0 <3.0.0"
flutter: ">=2.8.0"
dart: ">=2.12.0 <3.0.0"
flutter: ">=2.0.0"

@ -4,7 +4,7 @@ publish_to: "none"
version: 1.0.0+1
environment:
sdk: '>=2.12.0 <3.0.0'
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
@ -17,7 +17,7 @@ dependencies:
cupertino_icons: ^1.0.0
ansu_ui:
path: ../
get: ^4.1.3
get:
grinder:
args:

@ -25,7 +25,7 @@ void main(List<String> arguments) {
writeSegments(
sourceDirectoryPath: path.join(Directory.current.path, 'lib'),
targetFilePath: argResults['target'] as String?,
targetFilePath: argResults['target'] as String,
isDryRun: argResults['dry-run'] as bool,
);
}

@ -76,15 +76,15 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
'bool',
];
String? _src;
late StringScanner _scanner;
String _src;
StringScanner _scanner;
late List<_HighlightSpan> _spans;
List<_HighlightSpan> _spans;
@override
List<CodeSpan> format(String? src) {
List<CodeSpan> format(String src) {
_src = src;
_scanner = StringScanner(_src!);
_scanner = StringScanner(_src);
if (_generateSpans()) {
// Successfully parsed the code
@ -93,19 +93,19 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
for (final span in _spans) {
if (currentPosition != span.start) {
formattedText.add(
CodeSpan(text: _src!.substring(currentPosition, span.start)));
formattedText
.add(CodeSpan(text: _src.substring(currentPosition, span.start)));
}
formattedText
.add(CodeSpan(type: span.type, text: span.textForSpan(_src!)));
.add(CodeSpan(type: span.type, text: span.textForSpan(_src)));
currentPosition = span.end;
}
if (currentPosition != _src!.length) {
formattedText.add(
CodeSpan(text: _src!.substring(currentPosition, _src!.length)));
if (currentPosition != _src.length) {
formattedText
.add(CodeSpan(text: _src.substring(currentPosition, _src.length)));
}
return formattedText;
@ -126,23 +126,23 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r'/\*(.|\n)*\*/'))) {
_spans.add(_HighlightSpan(
_HighlightType.comment,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
// Line comments
if (_scanner.scan('//')) {
final startComment = _scanner.lastMatch!.start;
final startComment = _scanner.lastMatch.start;
var eof = false;
int endComment;
if (_scanner.scan(RegExp(r'.*\n'))) {
endComment = _scanner.lastMatch!.end - 1;
endComment = _scanner.lastMatch.end - 1;
} else {
eof = true;
endComment = _src!.length;
endComment = _src.length;
}
_spans.add(_HighlightSpan(
@ -162,8 +162,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r'r".*"'))) {
_spans.add(_HighlightSpan(
_HighlightType.string,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -172,8 +172,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r"r'.*'"))) {
_spans.add(_HighlightSpan(
_HighlightType.string,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -182,8 +182,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r'"""(?:[^"\\]|\\(.|\n))*"""'))) {
_spans.add(_HighlightSpan(
_HighlightType.string,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -192,8 +192,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r"'''(?:[^'\\]|\\(.|\n))*'''"))) {
_spans.add(_HighlightSpan(
_HighlightType.string,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -202,8 +202,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r'"(?:[^"\\]|\\.)*"'))) {
_spans.add(_HighlightSpan(
_HighlightType.string,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -212,8 +212,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r"'(?:[^'\\]|\\.)*'"))) {
_spans.add(_HighlightSpan(
_HighlightType.string,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -222,8 +222,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r'\d+\.\d+'))) {
_spans.add(_HighlightSpan(
_HighlightType.number,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -231,7 +231,7 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
// Integer
if (_scanner.scan(RegExp(r'\d+'))) {
_spans.add(_HighlightSpan(_HighlightType.number,
_scanner.lastMatch!.start, _scanner.lastMatch!.end));
_scanner.lastMatch.start, _scanner.lastMatch.end));
continue;
}
@ -239,8 +239,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r'[\[\]{}().!=<>&\|\?\+\-\*/%\^~;:,]'))) {
_spans.add(_HighlightSpan(
_HighlightType.punctuation,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
@ -249,17 +249,17 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (_scanner.scan(RegExp(r'@\w+'))) {
_spans.add(_HighlightSpan(
_HighlightType.keyword,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
continue;
}
// Words
if (_scanner.scan(RegExp(r'\w+'))) {
_HighlightType? type;
_HighlightType type;
var word = _scanner.lastMatch![0]!;
var word = _scanner.lastMatch[0];
if (word.startsWith('_')) {
word = word.substring(1);
}
@ -279,8 +279,8 @@ class DartSyntaxPrehighlighter extends SyntaxPrehighlighter {
if (type != null) {
_spans.add(_HighlightSpan(
type,
_scanner.lastMatch!.start,
_scanner.lastMatch!.end,
_scanner.lastMatch.start,
_scanner.lastMatch.end,
));
}
}
@ -346,13 +346,13 @@ class CodeSpan {
CodeSpan({this.type = _HighlightType.base, this.text});
final _HighlightType type;
final String? text;
final String text;
@override
String toString() {
return 'TextSpan('
'style: codeStyle.${_styleNameOf(type)}, '
"text: '${_escape(text!)}'"
"text: '${_escape(text)}'"
')';
}
}
@ -376,6 +376,7 @@ String _styleNameOf(_HighlightType type) {
case _HighlightType.base:
return 'baseStyle';
}
return '';
}
String _escape(String text) {
@ -408,4 +409,4 @@ String _encode(int charCode) {
String _encodeAndPad(int charCode) {
final encoded = _encode(charCode);
return '0' * (4 - encoded.length) + encoded;
}
}

@ -4,7 +4,6 @@
import 'dart:convert';
import 'dart:io';
import 'prehighlighter.dart';
const _globalPrologue =
@ -31,7 +30,7 @@ enum _FileReadStatus {
/// Returns the new status of the scanner whose previous status was
/// [oldStatus], after scanning the line [line].
_FileReadStatus? _updatedStatus(_FileReadStatus? oldStatus, String line) {
_FileReadStatus _updatedStatus(_FileReadStatus oldStatus, String line) {
_FileReadStatus lineStatus;
if (line.trim().startsWith('//')) {
lineStatus = _FileReadStatus.comments;
@ -41,7 +40,7 @@ _FileReadStatus? _updatedStatus(_FileReadStatus? oldStatus, String line) {
lineStatus = _FileReadStatus.finished;
}
_FileReadStatus? newStatus;
_FileReadStatus newStatus;
switch (oldStatus) {
case _FileReadStatus.comments:
newStatus =
@ -57,8 +56,6 @@ _FileReadStatus? _updatedStatus(_FileReadStatus? oldStatus, String line) {
case _FileReadStatus.finished:
newStatus = oldStatus;
break;
default:
newStatus = oldStatus;
}
return newStatus;
}
@ -80,7 +77,7 @@ Map<String, String> _createSegments(String sourceDirectoryPath) {
final content = file.readAsStringSync();
final lines = const LineSplitter().convert(content);
_FileReadStatus? status = _FileReadStatus.comments;
var status = _FileReadStatus.comments;
final prologue = StringBuffer();
@ -138,7 +135,7 @@ Map<String, String> _createSegments(String sourceDirectoryPath) {
// Simple line.
for (final name in activeSubsegments) {
subsegments[name]!.writeln(line);
subsegments[name].writeln(line);
}
}
}
@ -149,7 +146,7 @@ Map<String, String> _createSegments(String sourceDirectoryPath) {
}
var segments = <String, List<TaggedString>>{};
var segmentPrologues = <String, String?>{};
var segmentPrologues = <String, String>{};
// Sometimes a code segment is made up of subsegments. They are marked by
// names with a "#" symbol in it, such as "bottomSheetDemoModal#1" and
@ -171,7 +168,7 @@ Map<String, String> _createSegments(String sourceDirectoryPath) {
if (!segments.containsKey(name)) {
segments[name] = [];
}
segments[name]!.add(
segments[name].add(
TaggedString(
text: value.toString(),
order: order,
@ -182,7 +179,7 @@ Map<String, String> _createSegments(String sourceDirectoryPath) {
});
segments.forEach((key, value) {
value.sort((ts1, ts2) => (ts1.order! - ts2.order!).sign.round());
value.sort((ts1, ts2) => (ts1.order - ts2.order).sign.round());
});
var answer = <String, String>{};
@ -190,11 +187,11 @@ Map<String, String> _createSegments(String sourceDirectoryPath) {
for (final name in segments.keys) {
final buffer = StringBuffer();
buffer.write(segmentPrologues[name]!.trim());
buffer.write(segmentPrologues[name].trim());
buffer.write('\n\n');
for (final ts in segments[name]!) {
buffer.write(ts.text!.trim());
for (final ts in segments[name]) {
buffer.write(ts.text.trim());
buffer.write('\n\n');
}
@ -211,8 +208,8 @@ Map<String, String> _createSegments(String sourceDirectoryPath) {
class TaggedString {
TaggedString({this.text, this.order});
final String? text;
final double? order;
final String text;
final double order;
}
void _formatSegments(Map<String, String> segments, IOSink output) {
@ -257,15 +254,13 @@ void _formatSegments(Map<String, String> segments, IOSink output) {
///
/// The target file is overwritten.
void writeSegments(
{required String sourceDirectoryPath,
String? targetFilePath,
required bool isDryRun}) {
{String sourceDirectoryPath, String targetFilePath, bool isDryRun}) {
final segments = _createSegments(sourceDirectoryPath);
final output = isDryRun ? stdout : File(targetFilePath!).openWrite();
final output = isDryRun ? stdout : File(targetFilePath).openWrite();
_formatSegments(segments, output);
}
class PreformatterException implements Exception {
PreformatterException(this.cause);
String cause;
}
}

@ -63,7 +63,7 @@ Future<void> _runProcess(String executable, List<String> arguments) async {
// Function to make sure we capture all of the stdout.
// Reference: https://github.com/dart-lang/sdk/issues/31666
Future<String> _startProcess(String executable,
{List<String> arguments = const [], String? input}) async {
{List<String> arguments = const [], String input}) async {
final output = <int>[];
final completer = Completer<int>();
final process = await Process.start(executable, arguments);

@ -1,63 +1,77 @@
library ansu_ui;
export 'package:flutter_screenutil/flutter_screenutil.dart';
//third party
export 'package:velocity_x/velocity_x.dart';
export 'badge/as_badge.dart';
export 'bar/as_navigation_bar.dart';
export 'bar/as_navigation_item.dart';
export 'bar/as_tabbar.dart';
export 'bar/as_tabbar_item.dart';
export 'box/as_check_box.dart';
export 'buttons/as_back_button.dart';
export 'buttons/as_bottom_button.dart';
//buttons
export 'buttons/as_button.dart';
export 'buttons/as_check_button.dart';
export 'buttons/as_gradient_button.dart';
export 'buttons/as_long_button.dart';
export 'buttons/as_material_button.dart';
export 'buttons/as_back_button.dart';
export 'buttons/as_numeric_button.dart';
export 'buttons/as_bottom_button.dart';
export 'buttons/as_gradient_button.dart';
export 'buttons/as_radio_button.dart';
export 'dialog/as_bottom_dialog.dart';
export 'dialog/as_bottom_dialog_item.dart';
export 'dialog/as_delete_dialog.dart';
export 'buttons/as_material_button.dart';
export 'buttons/as_check_button.dart';
//scaffold
export 'scaffold/as_scaffold.dart';
export 'styles/as_colors.dart';
export 'bar/as_tabbar.dart';
export 'bar/as_tabbar_item.dart';
export 'bar/as_navigation_bar.dart';
export 'bar/as_navigation_item.dart';
export 'drawer/as_drawer.dart';
export 'toast/as_toast.dart';
export 'pickers/as_date_picker.dart';
export 'pickers/as_picker_box.dart';
export 'pickers/as_two_date_picker.dart';
export 'pickers/as_date_range_picker_part.dart';
export 'dialog/as_dialog.dart';
export 'dialog/as_dialog_button.dart';
export 'dialog/as_delete_dialog.dart';
export 'dialog/as_bottom_dialog.dart';
export 'dialog/as_bottom_dialog_item.dart';
export 'dialog/as_show_bottom_dialog.dart';
export 'divider/as_divider.dart';
export 'drawer/as_drawer.dart';
export 'extension/Text_extension.dart';
export 'extension/image_extension.dart';
export 'extension/list_extension.dart';
export 'extension/num_extension.dart';
export 'extension/string_extension.dart';
export 'extension/text_style_extension.dart';
export 'extension/widget_extension.dart';
export 'list_tile/as_card_expandable.dart';
export 'list_tile/as_edit_tile.dart';
export 'list_tile/as_list_tile.dart';
export 'list_tile/as_list_tile_x.dart';
export 'list_tile/as_option_tile.dart';
export 'list_tile/as_edit_tile.dart';
export 'list_tile/as_option_tile_item.dart';
export 'list_tile/as_vertical_tile_item.dart';
export 'pickers/as_date_picker.dart';
export 'pickers/as_date_range_picker_part.dart';
export 'pickers/as_picker_box.dart';
export 'pickers/as_two_date_picker.dart';
export 'pop_up_menu/pop_up_menu.dart';
export 'list_tile/as_list_tile_x.dart';
export 'list_tile/as_card_expandable.dart';
export 'refresh/as_refresh.dart';
//scaffold
export 'scaffold/as_scaffold.dart';
export 'styles/as_colors.dart';
export 'tag/as_check_tag.dart';
export 'box/as_check_box.dart';
export 'pop_up_menu/pop_up_menu.dart';
export 'tag/as_tag.dart';
export 'tag/as_check_tag.dart';
export 'divider/as_divider.dart';
export 'text_field/as_search_text_field.dart';
export 'theme/as_theme.dart';
export 'toast/as_toast.dart';
export 'utils/as_grid_image_view.dart';
export 'badge/as_badge.dart';
export 'utils/screen_adapter.dart';
export 'utils/camera_util.dart';
export 'utils/camera_view.dart';
export 'utils/photo_viewer.dart';
export 'utils/screen_adapter.dart';
export 'extension/num_extension.dart';
export 'extension/list_extension.dart';
export 'extension/widget_extension.dart';
export 'extension/string_extension.dart';
export 'extension/text_style_extension.dart';
export 'extension/image_extension.dart';
export 'theme/as_theme.dart';
//third party
export 'package:velocity_x/velocity_x.dart';
export 'package:flutter_screenutil/flutter_screenutil.dart';

@ -1,6 +1,6 @@
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
///
class ASButton extends StatelessWidget {
@ -43,10 +43,6 @@ class ASButton extends StatelessWidget {
final Color? disableTextColor;
final Color? splashColor;
///
final double? height;
ASButton({
Key? key,
this.bgcolor,
@ -62,7 +58,6 @@ class ASButton extends StatelessWidget {
this.disableColor,
this.disableTextColor,
this.splashColor,
this.height,
}) : super(key: key);
ASButton.danger({
@ -76,7 +71,6 @@ class ASButton extends StatelessWidget {
this.width,
this.disableColor,
this.disableTextColor,
this.height,
}) : outline = true,
outlineColor = kDangerColor,
textColor = kDangerColor,
@ -94,8 +88,7 @@ class ASButton extends StatelessWidget {
this.width,
this.disableColor,
this.disableTextColor,
this.splashColor,
this.height})
this.splashColor})
: outline = true,
outlineColor = kDarkColor,
textColor = kTextColor,
@ -112,13 +105,11 @@ class ASButton extends StatelessWidget {
this.width,
this.disableColor,
this.disableTextColor,
this.height,
}) : bgcolor = kLightPrimaryColor,
textColor = kLightTextColor,
outline = false,
this.splashColor = ColorTool.getSplashColor(kPrimaryColor),
super(key: key);
ASButton.operation(
{Key? key,
this.radius,
@ -130,13 +121,11 @@ class ASButton extends StatelessWidget {
this.width,
this.disableColor,
this.disableTextColor,
this.splashColor,
this.height})
this.splashColor})
: bgcolor = Color(0xFFF2F2F2),
textColor = kTextColor,
outline = false,
super(key: key);
ASButton.order({
Key? key,
required this.title,
@ -144,7 +133,6 @@ class ASButton extends StatelessWidget {
this.outlineColor,
this.width,
this.splashColor,
this.height,
}) : bgcolor = kLightPrimaryColor,
textColor = kTextColor,
textStyle = TextStyle(fontSize: 14.sp, fontWeight: FontWeight.bold),
@ -155,24 +143,6 @@ class ASButton extends StatelessWidget {
padding = EdgeInsets.symmetric(vertical: 8.w),
super(key: key);
ASButton.yellowHollow(
{Key? key,
this.radius,
this.textStyle,
this.padding,
required this.title,
this.onPressed,
this.width,
this.disableColor,
this.splashColor,
this.height})
: outline = true,
outlineColor = kPrimaryColor,
bgcolor = Colors.white,
textColor = kPrimaryColor,
disableTextColor = kPrimaryColor,
super(key: key);
@override
Widget build(BuildContext context) {
return MaterialButton(
@ -180,7 +150,6 @@ class ASButton extends StatelessWidget {
disabledTextColor: disableTextColor,
textColor: textColor ?? kLightPrimaryColor,
minWidth: width,
height: height,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
onPressed: onPressed,
child: title is String

@ -1,6 +1,6 @@
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
class ASLongButton extends StatelessWidget {
///
@ -21,7 +21,7 @@ class ASLongButton extends StatelessWidget {
final TextStyle? textStyle;
///
final EdgeInsetsGeometry? padding;
final Padding? padding;
///
final bool outline;
@ -98,9 +98,10 @@ class ASLongButton extends StatelessWidget {
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
onPressed: onPressed,
child: title is String
? Text(title, style: textStyle ?? TextStyle(fontSize: 20.sp))
? Text(title,
style: textStyle ?? TextStyle(fontSize: 20.sp))
: title,
padding: padding ?? EdgeInsets.symmetric(vertical: 8.w),
padding: padding as EdgeInsetsGeometry? ?? EdgeInsets.symmetric(vertical: 8.w),
shape: RoundedRectangleBorder(
side: outline
? BorderSide(color: outlineColor!, width: 1.w)

@ -1,8 +1,7 @@
import 'package:ansu_ui/painters/as_numeric_painter.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
///##
class ASNumericButton extends StatefulWidget {
@ -132,7 +131,6 @@ class _ASNumericButtonState extends State<ASNumericButton> {
alignment: Alignment.center,
child: IntrinsicWidth(
child: TextField(
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
keyboardType: TextInputType.number,
controller: _controller,
onChanged: (text) {
@ -150,7 +148,6 @@ class _ASNumericButtonState extends State<ASNumericButton> {
textAlign: TextAlign.center,
decoration: InputDecoration(
border: InputBorder.none,
contentPadding: EdgeInsets.zero,
isDense: true,
suffixText: widget.suffix,
suffixStyle: TextStyle(

@ -5,7 +5,7 @@ import 'package:ansu_ui/extension/num_extension.dart';
class ASRadioButton<T> extends StatefulWidget {
///
final dynamic groupValue;
final T? groupValue;
///
final String? title;
@ -15,37 +15,20 @@ class ASRadioButton<T> extends StatefulWidget {
///
final Function(T value)? onTap;
///
final bool mulitpleChoice;
ASRadioButton({
Key? key,
this.groupValue,
this.title,
this.value,
this.onTap,
}) : this.mulitpleChoice = false,
super(key: key);
ASRadioButton.mult({
Key? key,
this.groupValue,
this.title,
this.value,
this.onTap,
}) : this.mulitpleChoice = true,
super(key: key);
}) : super(key: key);
@override
_ASRadioButtonState createState() => _ASRadioButtonState();
}
class _ASRadioButtonState extends State<ASRadioButton> {
bool get _selected {
if (widget.mulitpleChoice) {
return (widget.groupValue as List).contains(widget.value);
} else {
return widget.value == widget.groupValue;
}
}
bool get _selected => widget.value == widget.groupValue;
@override
Widget build(BuildContext context) {
return InkWell(

@ -1,56 +0,0 @@
import 'package:ansu_ui/painters/circle_chart_painter.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class CircleChart extends StatelessWidget {
final double? size;
///
final double aspectRato;
///
final double? underStrokeWidth;
///
final double? aboveStrokeWidth;
///
final Color color;
///
final Widget core;
const CircleChart(
{Key? key,
this.size,
required this.aspectRato,
this.underStrokeWidth,
this.aboveStrokeWidth,
required this.color,
required this.core})
: super(key: key);
double get customSize => size ?? 100.w;
double get customUnderWidth => underStrokeWidth ?? 5.w;
double get customAboveWidth => aboveStrokeWidth ?? 15.w;
@override
Widget build(BuildContext context) {
return SizedBox(
width: customSize,
height: customSize,
child: CustomPaint(
painter: CircleChartPainter(
underStrokeWidth: customUnderWidth,
aboveStrokeWidth: customAboveWidth,
radius: aspectRato,
aboveColor: color),
child: Align(
alignment: Alignment.center,
child: core,
)),
);
}
}

@ -1,60 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class ASDottedDivider extends StatelessWidget {
final Axis axis;
final List<int>? dash;
final Color? color;
final double? dashWidth;
final double? strokeWidth;
const ASDottedDivider({
required this.axis,
this.dash = const <int>[2, 1],
this.color = const Color(0xFFD8D8D8),
this.dashWidth,
this.strokeWidth,
});
ASDottedDivider.horizontal({
this.dashWidth,
this.strokeWidth,
this.color = const Color(0xFFD8D8D8),
}) : this.axis = Axis.horizontal,
this.dash = const <int>[2, 1];
ASDottedDivider.vertical({
this.dashWidth,
this.strokeWidth,
this.color = const Color(0xFFD8D8D8),
}) : this.axis = Axis.vertical,
this.dash = const <int>[2, 1];
@override
Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, boxConstraints) {
final boxWidth = this.axis == Axis.horizontal
? boxConstraints.constrainWidth()
: boxConstraints.constrainHeight();
final _dashWidth = dashWidth ?? 10.w;
final _dashPattern = (1 + dash![1] / dash![0]);
final int count =
(( boxWidth) / (_dashWidth * _dashPattern)).floor();
return Flex(
direction: axis,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: List.generate(
count,
(_) => SizedBox(
width: this.axis == Axis.horizontal
? _dashWidth
: strokeWidth ?? 1.w,
height: this.axis == Axis.horizontal
? strokeWidth ?? 1.w
: _dashWidth,
child:
DecoratedBox(decoration: BoxDecoration(color: color)),
)));
});
}
}

@ -1,9 +0,0 @@
import 'package:ansu_ui/utils/match_text.dart';
import 'package:flutter/material.dart';
extension TextSpanExt on TextSpan {
TextSpan match(String match) {
return MatchText(matchText: match, text: this.text ?? '', style: this.style)
.matchSpan();
}
}

@ -1,25 +1,9 @@
import 'package:ansu_ui/extension/num_extension.dart';
import 'package:ansu_ui/list_tile/as_list_tile.dart';
import 'package:flutter/material.dart';
import 'package:ansu_ui/extension/num_extension.dart';
extension SeparateExt on List<Widget> {
List<Widget> sepWidget({
Widget? separate,
}) {
List<Widget> sepWidget({Widget? separate}) {
if (this.isEmpty) return [];
this.removeWhere((element) {
if (element.runtimeType == Offstage) {
return (element as Offstage).offstage;
}
if (element.runtimeType == Visibility) {
return !(element as Visibility).visible;
}
if (element.runtimeType == ASListTile) {
return !(element as ASListTile).visible;
}
return false;
});
return List.generate(this.length * 2 - 1, (index) {
if (index.isEven)
return this[index ~/ 2];

@ -17,15 +17,12 @@ extension NumExt on num {
BorderRadius get topRadius => BorderRadius.vertical(
top: Radius.circular(this.w),
);
BorderRadius get bottomRadius => BorderRadius.vertical(
bottom: Radius.circular(this.w),
);
BorderRadius get leftRadius => BorderRadius.horizontal(
left: Radius.circular(this.w),
);
BorderRadius get rightRadius => BorderRadius.horizontal(
right: Radius.circular(this.w),
);
@ -60,20 +57,4 @@ extension NumExt on num {
return str;
}
}
///0
///
///
String add0(int num) {
var str = this.toString();
if (str.length >= num) {
return str;
} else {
int dif = num - str.length;
for (var i = 0; i < dif; i++) {
str = '0' + str;
}
return str;
}
}
}

@ -1,6 +1,4 @@
import 'package:ansu_ui/toast/as_toast.dart';
import 'package:ansu_ui/utils/match_text.dart';
import 'package:flutter/material.dart';
extension PhoneExt on String {
List get _parsePhone {
@ -36,8 +34,4 @@ extension PhoneExt on String {
get toast {
ASToast.show(this);
}
MatchText matchStr(String match, {TextStyle? style}) {
return MatchText(matchText: match, text: this);
}
}

@ -1,45 +1,11 @@
import 'package:ansu_ui/utils/match_text.dart';
import 'package:auto_size_text_pk/auto_size_text_pk.dart';
import 'package:flutter/material.dart';
import 'Text_extension.dart';
extension WidgetExt on Widget {
Widget paddingExt(double horizontal, [double vertical = 0]) =>
Padding(
Widget paddingExt(double horizontal, [double vertical = 0]) => Padding(
padding: EdgeInsets.symmetric(
horizontal: horizontal,
vertical: vertical,
),
child: this,
);
Widget match(String match) {
if (this.runtimeType == Text) {
// var spans = (this as Text).textSpan;
// if (spans != null) {
// spans = spans.match(match);
// return Text.rich(spans);
// }
return MatchText(
matchText: match,
text: (this as Text).data ?? '',
style: (this as Text).style,
);
}
if (this.runtimeType == AutoSizeText) {
var spans = (this as AutoSizeText).textSpan;
if (spans != null) {
spans = spans.match(match);
return AutoSizeText.rich(spans);
}
return MatchText(
matchText: match,
text: (this as AutoSizeText).data ?? '',
style: (this as AutoSizeText).style,
);
}
return this;
}
}

@ -1,9 +1,7 @@
import 'package:ansu_ui/extension/num_extension.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:ansu_ui/extension/num_extension.dart';
class ASEditTile extends StatelessWidget {
final Widget? title;
@ -12,14 +10,6 @@ class ASEditTile extends StatelessWidget {
final TextEditingController? controller;
final Function(String text)? onChange;
final Function(String text)? onSubmitted;
final List<TextInputFormatter>? inputFormatters;
final TextInputType? keyBoardType;
final TextStyle? hintTextStyle;
final Widget? suffix;
final bool? obscureText;
final String? obscuringCharacter;
final bool enableEdit;
ASEditTile({
Key? key,
this.title,
@ -28,21 +18,12 @@ class ASEditTile extends StatelessWidget {
this.prefix,
this.onChange,
this.onSubmitted,
this.inputFormatters,
this.keyBoardType,
this.hintTextStyle,
this.suffix,
this.obscureText,
this.obscuringCharacter,
this.enableEdit = true,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ConstrainedBox(
constraints: BoxConstraints(minHeight: 46.w),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
10.wb,
InkWell(
@ -54,19 +35,11 @@ class ASEditTile extends StatelessWidget {
child: title ?? Text(''),
),
),
Offstage(
offstage: prefix == null,
child: prefix,
),
prefix ?? SizedBox(),
Expanded(
child: TextField(
controller: controller,
enabled: enableEdit,
onChanged: onChange,
inputFormatters: inputFormatters,
keyboardType: keyBoardType,
obscureText: obscureText ?? false,
obscuringCharacter: obscuringCharacter ?? '*',
onSubmitted: onSubmitted,
textAlign: TextAlign.end,
style: TextStyle(
@ -75,23 +48,18 @@ class ASEditTile extends StatelessWidget {
fontWeight: FontWeight.bold,
),
decoration: InputDecoration(
suffix: 10.wb,
border: InputBorder.none,
isDense: true,
contentPadding: EdgeInsets.zero,
hintText: '$hintText',
hintStyle: hintTextStyle ??
TextStyle(
color: kTextSubColor,
fontSize: 14.sp,
),
hintText: hintText,
hintStyle: TextStyle(
color: kTextSubColor,
fontSize: 14.sp,
),
),
),
),
Offstage(
offstage: suffix == null,
child: suffix,
)
10.wb,
],
),
);

@ -17,10 +17,6 @@ class ASListTile extends StatelessWidget {
///
final CrossAxisAlignment? crossAxisAlignment;
///
final bool visible;
ASListTile({
Key? key,
this.title,
@ -28,56 +24,51 @@ class ASListTile extends StatelessWidget {
this.trail,
this.height,
this.crossAxisAlignment,
this.visible = true,
}) : super(key: key);
ASListTile.option({
Key? key,
this.title,
this.text,
this.trail,
this.visible = true,
}) : height = 32.w,
crossAxisAlignment = CrossAxisAlignment.center,
super(key: key);
@override
Widget build(BuildContext context) {
return Offstage(
offstage: !visible,
child: Container(
margin: height == null
? EdgeInsets.symmetric(vertical: 8.w, horizontal: 10.w)
: EdgeInsets.symmetric(horizontal: 10.w),
height: height,
alignment: Alignment.centerLeft,
child: Row(
crossAxisAlignment: crossAxisAlignment ?? CrossAxisAlignment.start,
children: [
Container(
width: 85.w,
child: Text(
title!,
maxLines: 1,
overflow: TextOverflow.visible,
softWrap: false,
style: TextStyle(color: kTextColor, fontSize: 14.sp),
),
),
Expanded(
child: text == null
? Text('')
: text is String
? Text(
text,
maxLines: 2,
style: TextStyle(color: kTextSubColor, fontSize: 14.sp),
)
: text,
return Container(
margin: height == null
? EdgeInsets.symmetric(vertical: 8.w, horizontal: 10.w)
: EdgeInsets.symmetric(horizontal: 10.w),
height: height,
alignment: Alignment.centerLeft,
child: Row(
crossAxisAlignment:
crossAxisAlignment ?? CrossAxisAlignment.start,
children: [
Container(
width: 85.w,
child: Text(
title!,
maxLines: 1,
overflow: TextOverflow.visible,
softWrap: false,
style: TextStyle(color: kTextColor, fontSize: 14.sp),
),
trail ?? SizedBox()
],
),
),
Expanded(
child: text == null
? Text('')
: text is String
? Text(
text,
maxLines: 2,
style: TextStyle(color: kTextSubColor, fontSize: 14.sp),
)
: text,
),
trail ?? SizedBox()
],
),
);
}

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:ansu_ui/extension/text_style_extension.dart';
import 'package:ansu_ui/extension/num_extension.dart';
///list tile
class ASListTileX extends StatelessWidget {
final Widget title;
final Widget? suffix;

@ -1,8 +1,7 @@
import 'package:ansu_ui/divider/as_divider.dart';
import 'package:ansu_ui/extension/list_extension.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:ansu_ui/divider/as_divider.dart';
///Tile
class ASOptionTile extends StatelessWidget {
@ -16,7 +15,6 @@ class ASOptionTile extends StatelessWidget {
final EdgeInsetsGeometry? padding;
///
///leading!=null items!=null
final dynamic leading;
///item 使`ASOptionTileItem`,`ASVerticalTileItem`,`ASListTile`
@ -28,36 +26,27 @@ class ASOptionTile extends StatelessWidget {
{Key? key, required this.item, this.padding, this.leading})
: items = [],
super(key: key);
int get length => items!.length;
List<Widget> get _widgets {
var list = <Widget>[];
if (leading == null) {
return list = items ?? [];
} else {
list.add(Container(
alignment: Alignment.centerLeft,
child: leading is String
? Padding(
padding: EdgeInsets.symmetric(vertical: 14.w, horizontal: 10.w),
child: Text(
this.leading,
style: TextStyle(
color: kTextColor,
fontSize: 16.sp,
fontWeight: FontWeight.bold),
),
)
: leading,
));
list.addAll((items ?? []));
return list;
}
}
@override
Widget build(BuildContext context) {
if (this.leading != null) {
this.items!.insert(
0,
Container(
alignment: Alignment.centerLeft,
child: this.leading is String
? Text(
this.leading,
style: TextStyle(
color: kTextColor,
fontSize: 16.sp,
fontWeight: FontWeight.bold),
)
: this.leading,
),
);
}
return Material(
clipBehavior: Clip.antiAlias,
color: kForegroundColor,
@ -69,13 +58,15 @@ class ASOptionTile extends StatelessWidget {
child: item ??
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: _widgets.sepWidget(
separate: this.padding == null
? ASDivider(
indent: 10.w,
endIndent: 10.w,
)
: ASDivider()),
children: List.generate(length * 2 - 1, (index) {
final displayIndex = index ~/ 2;
if (index.isEven)
return items![displayIndex];
else
return this.padding == null
? ASDivider(indent: 10.w, endIndent: 10.w)
: ASDivider();
}),
),
));
}

@ -1,12 +1,12 @@
import 'package:ansu_ui/extension/num_extension.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/extension/num_extension.dart';
class ASOptionTileItem extends StatelessWidget {
final Widget? leading;
final Widget? title;
final VoidCallback? onPressed;
final onPressed;
const ASOptionTileItem({
Key? key,
this.leading,

@ -1,37 +0,0 @@
import 'dart:math';
import 'package:flutter/material.dart';
class CircleChartPainter extends CustomPainter {
final double underStrokeWidth;
final double aboveStrokeWidth;
final double radius;
final Color aboveColor;
CircleChartPainter(
{required this.underStrokeWidth,
required this.aboveStrokeWidth,
required this.radius,
required this.aboveColor});
@override
void paint(Canvas canvas, Size size) {
var offset = Offset(size.width / 2, size.height / 2);
var paint = Paint()
..strokeWidth = underStrokeWidth
..style = PaintingStyle.stroke
..color = Color(0xFFCECECE);
canvas.drawCircle(offset, size.width / 2, paint);
paint
..strokeWidth = aboveStrokeWidth
..strokeCap = StrokeCap.round
..color = aboveColor;
var rect = Rect.fromCircle(center: offset, radius: size.width / 2);
canvas.drawArc(rect, -pi / 2, 2 * pi * radius, false, paint);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) {
return false;
}
}

@ -5,19 +5,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
//
class _ASDatePickerWidget extends StatefulWidget {
final CupertinoDatePickerMode mode;
_ASDatePickerWidget({Key? key})
: mode = CupertinoDatePickerMode.date,
super(key: key);
_ASDatePickerWidget.time({Key? key})
: mode = CupertinoDatePickerMode.time,
super(key: key);
_ASDatePickerWidget.dateAndTime({Key? key})
: mode = CupertinoDatePickerMode.dateAndTime,
super(key: key);
_ASDatePickerWidget({Key? key}) : super(key: key);
@override
_ASDatePickerWidgetState createState() => _ASDatePickerWidgetState();
@ -25,7 +13,6 @@ class _ASDatePickerWidget extends StatefulWidget {
class _ASDatePickerWidgetState extends State<_ASDatePickerWidget> {
DateTime? _dateTime;
@override
void initState() {
super.initState();
@ -42,10 +29,11 @@ class _ASDatePickerWidgetState extends State<_ASDatePickerWidget> {
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 18.w),
child: CupertinoDatePicker(
onDateTimeChanged: (dateTime) {
_dateTime = dateTime;
},
mode: widget.mode),
onDateTimeChanged: (dateTime) {
_dateTime = dateTime;
},
mode: CupertinoDatePickerMode.date,
),
),
);
}
@ -69,7 +57,7 @@ class _ASDatePickerWidgetState extends State<_ASDatePickerWidget> {
///```dart
///Navigator.pop(context,dateTime)
///```
Future<DateTime?> showAsDatePicker(BuildContext context) async {
Future<DateTime?> asDatePicker(BuildContext context) async {
return await showModalBottomSheet(
context: context,
builder: (context) {
@ -77,21 +65,3 @@ Future<DateTime?> showAsDatePicker(BuildContext context) async {
},
);
}
Future<DateTime?> showAsTimePicker(BuildContext context) async {
return await showModalBottomSheet(
context: context,
builder: (context) {
return _ASDatePickerWidget.time();
},
);
}
Future<DateTime?> showAsDateAndTimePicker(BuildContext context) async {
return await showModalBottomSheet(
context: context,
builder: (context) {
return _ASDatePickerWidget.dateAndTime();
},
);
}

@ -3,22 +3,22 @@ import 'package:ansu_ui/pickers/as_two_date_picker.dart';
class RangeDate {
DateTime? start;
DateTime end;
DateTime? end;
RangeDate({
this.start,
required this.end,
this.end,
});
}
/// start null
///`bool``true`,
///
///
Future<RangeDate> show2DatePicker(BuildContext context,
{ RangeDate? date}) async {
///`RangeDate`
Future<dynamic> show2DatePicker(BuildContext context,
{bool? isAnHour, RangeDate? date}) async {
return await showModalBottomSheet(
context: context,
builder: (context) {
return AS2DatePicker( date: date);
return AS2DatePicker(isAnHour: isAnHour, date: date);
},
);
}

@ -8,8 +8,9 @@ import 'package:ansu_ui/buttons/as_long_button.dart';
import 'package:velocity_x/velocity_x.dart';
class AS2DatePicker extends StatefulWidget {
final bool? isAnHour;
final RangeDate? date;
AS2DatePicker({Key? key, this.date}) : super(key: key);
AS2DatePicker({Key? key, this.isAnHour, this.date}) : super(key: key);
@override
_AS2DatePickerState createState() => _AS2DatePickerState();
@ -27,6 +28,7 @@ class _AS2DatePickerState extends State<AS2DatePicker> {
end: now.add(Duration(hours: 1)),
);
bool _inAnHour = false;
Widget _buildDayButton(int index, String title) {
bool sameDay = _selectedDay == index;
return MaterialButton(
@ -103,14 +105,17 @@ class _AS2DatePickerState extends State<AS2DatePicker> {
return _renderButton(
'一小时内',
() {
_inAnHour = true;
setState(() => {_selectedDate = now});
},
sameItem,
);
}
_inAnHour = false;
return _renderButton(
'${startHour + index}:00-${startHour + index + 1}:00',
() {
_inAnHour = false;
setState(() => _selectedDate = DateTime(
now.year,
now.month,
@ -134,6 +139,7 @@ class _AS2DatePickerState extends State<AS2DatePicker> {
return _renderButton(
'$index\:00-${index + 1}:00',
() {
_inAnHour = false;
setState(() => _selectedDate = DateTime(
now.year,
now.month,
@ -152,6 +158,8 @@ class _AS2DatePickerState extends State<AS2DatePicker> {
void initState() {
super.initState();
_pageController = PageController();
_selectedDate = now;
_inAnHour = widget.isAnHour ?? true;
_selectedDate = widget.date?.start ?? now;
}
@ -205,17 +213,8 @@ class _AS2DatePickerState extends State<AS2DatePicker> {
child: ASLongButton.solid(
title: '确认',
onPressed: () {
if (_selectedDate!.hour==now.hour)
Navigator.pop(
context,
RangeDate(
start: null,
end: DateTime(
_selectedDate!.year,
_selectedDate!.month,
_selectedDate!.day,
_selectedDate!.hour + 1),
));
if (_inAnHour)
Navigator.pop(context, true);
else
Navigator.pop(
context,

@ -5,11 +5,11 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
class ASCheckTag extends StatelessWidget {
final bool checked;
final Widget? text;
final Widget text;
const ASCheckTag({
Key? key,
this.checked = false,
this.text,
required this.text,
}) : super(key: key);
@override
@ -39,16 +39,15 @@ class ASCheckTag extends StatelessWidget {
),
),
),
if (text != null) 6.wb,
if (text != null)
AnimatedDefaultTextStyle(
duration: Duration(milliseconds: 300),
curve: Curves.easeInOutCubic,
style: TextStyle(
color: checked ? Color(0xFF00BF44) : Color(0xFFFF0000),
),
child: text!,
6.wb,
AnimatedDefaultTextStyle(
duration: Duration(milliseconds: 300),
curve: Curves.easeInOutCubic,
style: TextStyle(
color: checked ? Color(0xFF00BF44) : Color(0xFFFF0000),
),
child: text,
),
],
);
}

@ -1,7 +1,7 @@
import 'package:ansu_ui/extension/num_extension.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:ansu_ui/extension/num_extension.dart';
class ASTag extends StatelessWidget {
///
@ -135,7 +135,6 @@ class ASTag extends StatelessWidget {
style: textStyle ??
TextStyle(
color: textColor,
height: 1,
fontSize: 10.sp,
),
),

@ -1,6 +1,6 @@
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
///TextFiled
class ASSearchTextField extends StatefulWidget implements PreferredSizeWidget {
@ -14,8 +14,6 @@ class ASSearchTextField extends StatefulWidget implements PreferredSizeWidget {
this.margin,
this.onPressed,
this.height,
this.prefix,
this.suffix,
}) : button = false,
super(key: key);
@ -30,8 +28,6 @@ class ASSearchTextField extends StatefulWidget implements PreferredSizeWidget {
this.margin,
this.onPressed,
this.height,
this.prefix,
this.suffix,
}) : button = true,
super(key: key);
@ -61,12 +57,6 @@ class ASSearchTextField extends StatefulWidget implements PreferredSizeWidget {
///
final double? height;
///
final Widget? prefix;
/// widget button
final Widget? suffix;
@override
_ASSearchTextFieldState createState() => _ASSearchTextFieldState();
@ -147,35 +137,28 @@ class _ASSearchTextFieldState extends State<ASSearchTextField> {
cursorColor: kPrimaryColor,
textInputAction: TextInputAction.search,
decoration: InputDecoration(
fillColor: Color(0xFFF8F8F8),
filled: true,
hintText: widget.hintText,
hintStyle: TextStyle(
color: kTextSubColor,
fontSize: 14.sp,
),
border: _border,
enabledBorder: _border,
focusedBorder: _border,
focusedErrorBorder: _border,
prefixIcon: Padding(
padding: EdgeInsets.only(left: 13.w, right: 8.w),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.search,
size: 16.w,
color: Colors.black,
),
widget.prefix ?? SizedBox(),
],
),
fillColor: Color(0xFFF8F8F8),
filled: true,
hintText: widget.hintText,
hintStyle: TextStyle(
color: kTextSubColor,
fontSize: 14.sp,
),
border: _border,
enabledBorder: _border,
focusedBorder: _border,
focusedErrorBorder: _border,
prefixIcon: Padding(
padding: EdgeInsets.only(left: 13.w, right: 8.w),
child: Icon(
Icons.search,
size: 16.w,
color: Colors.black,
),
prefixIconConstraints: BoxConstraints(minWidth: 0, minHeight: 0),
contentPadding: EdgeInsets.zero,
suffixIcon: widget.suffix,
suffixIconConstraints: BoxConstraints(minWidth: 0, minHeight: 0)),
),
prefixIconConstraints: BoxConstraints(minWidth: 0, minHeight: 0),
contentPadding: EdgeInsets.zero,
),
),
);
}

@ -1,98 +0,0 @@
import 'dart:io';
import 'package:ansu_ui/ansu_ui.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class AsGridImageView extends StatelessWidget {
final List<File>? files;
final List<String>? nets;
final String? placeholder;
final void Function(dynamic value)? onDelete;
final double? iconSize;
const AsGridImageView.fromFile({Key? key,
required this.files,
this.placeholder,
this.onDelete,
this.iconSize})
: nets = null,
super(key: key);
const AsGridImageView.fromNets({Key? key,
required this.nets,
this.placeholder,
this.onDelete,
this.iconSize})
: files = null,
super(key: key);
@override
Widget build(BuildContext context) {
var size = iconSize ?? 16.w;
return GridView(
padding: EdgeInsets.all(10.w),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
mainAxisSpacing: 10.w,
crossAxisSpacing: 10.w,
),
shrinkWrap: true,
children: files == null
? nets!
.map((e) =>
GestureDetector(
onTap: () =>
PhotoViewer.fromNet(
context,
tag: e,
net: e,
),
child: Stack(
children: [
Hero(
tag: e,
child: FadeInImage.assetNetwork(
placeholder: placeholder ?? '', image: e),
),
if(onDelete != null) Positioned(
top: size / 2,
right: size / 2,
child: GestureDetector(
onTap: () {
onDelete!(e);
},
child: Icon(
CupertinoIcons.xmark_circle_fill,
color: Colors.black45,
),
))
],
),
))
.toList()
: files!
.map((e) =>
Stack(children: [
if(onDelete != null) Positioned(
top: 0,
right: 0,
child: GestureDetector(
onTap: () {
onDelete!(e);
},
child: Icon(
CupertinoIcons.xmark_circle_fill,
color: Colors.black45,
),
)),
GestureDetector(
onTap: () =>
PhotoViewer.fromFile(context,
tag: e.path, file: e),
child: Hero(tag: e.path, child: Image.file(e)))
]))
.toList());
}
}

@ -1,20 +1,20 @@
import 'dart:io';
import 'dart:ui';
import 'package:ansu_ui/divider/as_divider.dart';
import 'package:ansu_ui/extension/list_extension.dart';
import 'package:ansu_ui/scaffold/as_scaffold.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:ansu_ui/utils/camera_util.dart';
import 'package:ansu_ui/utils/photo_viewer.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:ansu_ui/styles/as_colors.dart';
import 'package:ansu_ui/scaffold/as_scaffold.dart';
import 'package:ansu_ui/utils/photo_viewer.dart';
import 'package:ansu_ui/utils/camera_util.dart';
import 'package:ansu_ui/extension/list_extension.dart';
import 'package:ansu_ui/divider/as_divider.dart';
import 'package:velocity_x/velocity_x.dart';
class CameraView extends StatefulWidget {
final File? file;
final String? title;
CameraView({Key? key, this.file, this.title}) : super(key: key);
@override
@ -41,8 +41,7 @@ class _CameraViewState extends State<CameraView> {
alignment: Alignment.center,
child: GestureDetector(
onTap: () {
PhotoViewer.fromFile(context,
tag: widget.title ?? '', file: widget.file!);
toPhotoViewer(context, tag: widget.title, file: widget.file);
},
child: Hero(
child: Image.file(

@ -1,41 +0,0 @@
import 'package:ansu_ui/ansu_ui.dart';
import 'package:flutter/material.dart';
class MatchText extends StatelessWidget {
final String matchText;
final String text;
final TextStyle? style;
const MatchText({
Key? key,
required this.matchText,
required this.text,
this.style,
}) : super(key: key);
TextSpan matchSpan() {
return TextSpan(children: getSpans());
}
List<TextSpan> getSpans() {
var textStyle = style ?? TextStyle(color: kTextColor, fontSize: 14.sp);
if (matchText.isEmpty) {
return [TextSpan(text: text, style: textStyle)];
}
List<TextSpan> allSpan = text
.replaceAllMapped(matchText, (Match mt) => '\r${mt[0]}\r')
.split('\r')
.map<TextSpan>(
(e) => (matchText.matchAsPrefix(e) == null || e.length == text.length)
? TextSpan(text: e, style: textStyle)
: TextSpan(text: e, style: textStyle.copyWith(color: Colors.red)),
)
.toList();
return allSpan;
}
@override
Widget build(BuildContext context) {
return RichText(text: TextSpan(children: getSpans()));
}
}

@ -1,118 +1,30 @@
import 'dart:io';
import 'package:ansu_ui/extension/num_extension.dart';
import 'package:flutter/material.dart';
import 'package:ansu_ui/extension/num_extension.dart';
class PhotoViewer extends StatefulWidget {
final File? file;
final String? net;
final String tag;
static fromFile(BuildContext context,
{required String tag, required File file}) {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secondAnimation) {
return PhotoViewer.toFile(file: file, tag: tag);
},
opaque: false,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return FadeTransition(opacity: animation, child: child);
},
),
);
}
static fromNet(BuildContext context,
{required String tag, required String net}) {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secondAnimation) {
return PhotoViewer.toNet(net: net, tag: tag);
},
opaque: false,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return FadeTransition(opacity: animation, child: child);
},
),
);
}
PhotoViewer.toFile({
Key? key,
this.file,
required this.tag,
}) : net = null,
super(key: key);
PhotoViewer.toNet({Key? key, required this.tag, this.net})
: file = null,
super(key: key);
final String? tag;
PhotoViewer({Key? key, this.file, this.tag}) : super(key: key);
@override
_PhotoViewerState createState() => _PhotoViewerState();
}
class _PhotoViewerState extends State<PhotoViewer>
with SingleTickerProviderStateMixin {
TransformationController _controller = TransformationController();
Animation? _animationReset;
late AnimationController _controllerReset;
void reset() {
_controllerReset.reset();
_animationReset = Matrix4Tween(
begin: _controller.value,
end: Matrix4.identity(),
).animate(_controllerReset);
_animationReset!.addListener(_onAnimateReset);
_controllerReset.forward();
}
void _onAnimateReset() {
_controller.value = _animationReset!.value;
if (!_controllerReset.isAnimating) {
_animationReset?.removeListener(_onAnimateReset);
_animationReset = null;
_controllerReset.reset();
}
}
@override
void initState() {
_controllerReset =
AnimationController(vsync: this, duration: Duration(milliseconds: 400));
super.initState();
}
@override
void dispose() {
_controllerReset.dispose();
_controller.dispose();
super.dispose();
}
class _PhotoViewerState extends State<PhotoViewer> {
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => Navigator.pop(context),
onDoubleTap: () => reset(),
child: Scaffold(
backgroundColor: Colors.black54,
body: InteractiveViewer(
transformationController: _controller,
boundaryMargin: 100.edge,
child: Container(
width: double.infinity,
height: double.infinity,
alignment: Alignment.center,
return Scaffold(
backgroundColor: Colors.black54,
body: GestureDetector(
onTap: () => Navigator.pop(context),
child: Center(
child: InteractiveViewer(
boundaryMargin: 100.edge,
child: Hero(
tag: widget.tag,
child: widget.file != null
? Image.file(widget.file!)
: Image.network(widget.net!),
tag: widget.tag!,
child: Image.file(widget.file!),
),
),
),
@ -120,3 +32,18 @@ class _PhotoViewerState extends State<PhotoViewer>
);
}
}
toPhotoViewer(BuildContext context, {String? tag, File? file}) {
Navigator.push(
context,
PageRouteBuilder(
pageBuilder: (context, animation, secondAnimation) {
return PhotoViewer(file: file, tag: tag);
},
opaque: false,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return FadeTransition(opacity: animation, child: child);
},
),
);
}

@ -7,84 +7,84 @@ packages:
path: "."
ref: HEAD
resolved-ref: d724abf91595f58ed58f6c722ebe60acdb750c67
url: "https://git.oa00.com/flutter_pub/animated_collection.git"
url: "http://159.75.73.143:8080/laiiihz/animated_collection.git"
source: git
version: "0.0.1"
animator:
dependency: transitive
description:
name: animator
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.0"
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.8.2"
version: "2.5.0"
auto_size_text_pk:
dependency: "direct main"
dependency: transitive
description:
name: auto_size_text_pk
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.0"
bot_toast:
dependency: "direct main"
description:
name: bot_toast
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.3"
version: "4.0.1"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
version: "1.1.0"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.1"
version: "1.2.0"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.15.0"
cross_file:
dependency: transitive
description:
name: cross_file
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.3+2"
expandable:
dependency: "direct main"
description:
name: expandable
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.0.1"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
flutter:
@ -96,23 +96,23 @@ packages:
dependency: "direct main"
description:
name: flutter_easyrefresh
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.2"
version: "2.2.1"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.7"
version: "2.0.1"
flutter_screenutil:
dependency: "direct main"
description:
name: flutter_screenutil
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.5.4"
version: "5.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
@ -127,93 +127,100 @@ packages:
dependency: "direct main"
description:
name: get
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.6.5"
version: "4.1.4"
http:
dependency: transitive
description:
name: http
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.13.5"
version: "0.13.1"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.1"
version: "4.0.0"
image_picker:
dependency: "direct main"
description:
name: image_picker
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.7.5+4"
version: "0.7.4"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.8"
version: "2.0.0"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.6.1"
version: "2.0.1"
intl:
dependency: transitive
description:
name: intl
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.17.0"
js:
dependency: transitive
description:
name: js
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.3"
lpinyin:
dependency: "direct main"
description:
name: lpinyin
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.3"
version: "2.0.1"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.12.11"
version: "0.12.10"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.7.0"
version: "1.3.0"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.8.0"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.11.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.3"
version: "2.0.0"
sky_engine:
dependency: transitive
description: flutter
@ -223,72 +230,79 @@ packages:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.8.1"
version: "1.8.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.10.0"
states_rebuilder:
dependency: transitive
description:
name: states_rebuilder
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.0+1"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.0"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.4.3"
version: "0.2.19"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.1"
version: "2.1.0"
velocity_x:
dependency: "direct main"
description:
name: velocity_x
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.5.1"
version: "2.6.1"
vxstate:
dependency: transitive
description:
name: vxstate
url: "https://pub.dartlang.org"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
version: "2.0.1"
sdks:
dart: ">=2.15.0 <3.0.0"
flutter: ">=2.8.0"
dart: ">=2.12.0 <3.0.0"
flutter: ">=2.0.0"

@ -1,8 +1,7 @@
name: ansu_ui
description: A new Flutter package.
version: 1.0.0
version: 0.0.4
author:
publish_to: none
environment:
sdk: ">=2.12.0 <3.0.0"
@ -16,12 +15,11 @@ dependencies:
lpinyin: ^2.0.1
image_picker: ^0.7.2
bot_toast: ^4.0.0+1
velocity_x: ^3.3.0
auto_size_text_pk: ^3.0.0
velocity_x: ^2.6.1
expandable: ^5.0.1
animated_collection:
git:
url: https://git.oa00.com/flutter_pub/animated_collection.git
url: http://159.75.73.143:8080/laiiihz/animated_collection.git
get: ^4.1.3
dev_dependencies:

Loading…
Cancel
Save