Starlight Utils

使用导航、无上下文和有用方法的最简单方法。

特点

名称 状态
无上下文导航服务
无上下文对话框
无上下文底部工作表
无上下文SnackBar
无上下文日期选择器
无上下文时间选择器
字符串时间差
货币格式
密码验证
电子邮件验证
移除空格
验证
MediaQuery
主题

截图



  


  


  


  


  


  


  


  

安装

将 starlight_utils 添加为 pubspec 文件的依赖项。

   starlight_utils: 
    git:
      url: https://github.com/YeMyoAung/starlight_utils.git

设置

Android 和 iOS 不需要额外的集成步骤。

用法

首先,您需要导入我们的包。

import 'package:starlight_utils/starlight_utils.dart';

然后您就可以轻松使用了。

笔记

如果您想使用无上下文导航服务
您需要设置导航键。
如果您想使用无上下文对话框、底部工作表等...
您需要调用 StarlightUtils

无上下文导航

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
  
    StarlightUtils.push(MyHome());///`Navigation.pushNamed()` shortcut.
  
    StarlightUtils.pushNamed('home');///`Navigation.pushNamed()` shortcut.
  	
    StarlightUtils.pushNamedAndRemoveUntil('home');///`Navigation.pushNamedAndRemoveUntil()` shortcut.
    
    StarlightUtils.pushAndRemoveUntil(MyHome());///`Navigation.pushAndRemoveUntil()` shortcut.
    
    StarlightUtils.pushReplacement(MyHome());///`Navigation.pushReplacement()` shortcut.
    
    StarlightUtils.pushReplacement('home');///`Navigation.popAndPushNamed()` shortcut.
    
    StarlightUtils.popAndPushNamed('home');///`Navigation.pop()` shortcut.
    
    StarlightUtils.conPop();///`Navigation.pop()` shortcut.
  
    return MaterialApp(
        navigatorKey: StarlightUtils.navigatorKey,///important
    );
  }
}

关于对话框

class MyApp xtends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return SizedBox(
      width: context.width - 20,
      height: 45,
      child: ElevatedButton(
        onPressed: StarlightUtils.aboutDialog,
        child: const Text(
          "aboutDialog",
        ),
      ),
    );
  }
}

对话框

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return SizedBox(
      width: context.width - 20,
      height: 45,
      child: ElevatedButton(
        onPressed: () {
          StarlightUtils.dialog(AlertDialog(
            title: Text("hello"),
          ));
        },
        child: const Text(
          "dialog",
        ),
      ),
    );
  }
}

底部工作表

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return SizedBox(
      width: context.width - 20,
      height: 45,
      child: ElevatedButton(
        onPressed: () {
          StarlightUtils.bottomSheet(Container(
            width: context.width,
            height: 100,
            child: Text("bottom sheet"),
          ));
        },
        child: const Text(
          "bottomSheet",
        ),
      ),
    );
  }
}

Snackbar

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return SizedBox(
      width: context.width - 20,
      height: 45,
      child: ElevatedButton(
        onPressed: () {
          StarlightUtils.snackbar(SnackBar(content: Text('hello')));
        },
        child: const Text(
          "snackbar",
        ),
      ),
    );
  }
}

日期选择器

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return SizedBox(
      width: context.width - 20,
      height: 45,
      child: ElevatedButton(
        onPressed: () {
          StarlightUtils.datePicker(
            initialDate: DateTime.now(),
            firstDate: DateTime(2000),
            lastDate: DateTime(2100),
          );
        },
        child: const Text(
          "datePicker",
        ),
      ),
    );
  }
}

TimePicker

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return SizedBox(
      width: context.width - 20,
      height: 45,
      child: ElevatedButton(
        onPressed: () {
          StarlightUtils.timePicker(
            initialTime: TimeOfDay.fromDateTime(
              DateTime.now(),
            ),
          );
        },
        child: const Text(
          "timePicker",
        ),
      ),
    );
  }
}

日期范围选择器

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return SizedBox(
      width: context.width - 20,
      height: 45,
      child: ElevatedButton(
        onPressed: () {
          StarlightUtils.dateRangePicker(
      		firstDate: DateTime(2000),
      		lastDate: DateTime(2100),
  	 );
        },
        child: const Text(
          "dateRangePicker",
        ),
      ),
    );
  }
}

菜单

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    StarlightUtils.of(context);///important
    return Scaffold(
          appBar: AppBar(
            actions: [
              IconButton(
                onPressed: () {
                  StarlightUtils.menu(
                    position: RelativeRect.fromLTRB(10, 0, 0, 0),
                        items: [
                            PopupMenuItem(child: Text('item 1')),
                            PopupMenuItem(child: Text('item 2')),
                            PopupMenuItem(child: Text('item 3')),
                        ],
                    );
                },
                icon: Icon(Icons.more_vert),
              )
            ],
          ),
         
        );
  }
}

实用

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    print(DateTime.now().differenceTimeInString(DateTime(2021, 12, 12)));///4w
    print(12850.6);///12,850.6
    print("password".isStrongPassword);///false
    print("a@".isEmail);///false
    print("a b c".withoutWhiteSpace);///abc
    print("Hello World".toValidate);
    
    return Container();
  }
}

MediaQuery

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    context.with;///device width
    context.height;///device height
    context.devicePixelRatio;///device pixel ratio
    context.textScaleFactor;///text scale factor
    context.topSafe;///Appbar height
    context.bottomSafe;///bottom navigationbar height
    context.orientation;///Device orientation
    context.invertColors;///is inverting Colors or not
    context.highContrast;///is highContrast or not
    context.gestureSettings;///gesture settings
    context.boldText;///is bold text or not
    context.alwaysUse24HourFormat;///is using 24 hour format or not
    context.accessibleNavigation;///is accessible navigation or not
    return Container();
  }
}

主题

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    context.theme;///ThemeData
    return Container();
  }
}

联系我们

Starlight Studio

GitHub

查看 Github