show<T> static method

Future<T?> show<T>(
  1. BuildContext context, {
  2. required Widget child,
  3. bool isScrollControlled = true,
  4. bool isDismissible = true,
  5. EdgeInsetsGeometry? padding,
  6. bool showBar = true,
})

初始弹出窗口 使用 await show 接收 Navigator.of(context).pop(T) 的内容,建议声明 T 的类型

Implementation

static Future<T?> show<T>(
  BuildContext context, {
  required Widget child,
  bool isScrollControlled = true,
  bool isDismissible = true,
  EdgeInsetsGeometry? padding,
  bool showBar = true,
}) async {
  return await showModalBottomSheet(
    context: context,
    isScrollControlled: isScrollControlled,
    backgroundColor: Colors.transparent,
    isDismissible: isDismissible,
    builder: (BuildContext context) {
      final isDarkMode = Theme.of(context).brightness == Brightness.dark;
      return Padding(
        padding: MediaQuery.of(context).viewInsets, // 考虑键盘高度
        child: Container(
          width: double.infinity,
          padding: padding ?? const EdgeInsets.only(left: 16,right: 16,bottom: 16),
          decoration: BoxDecoration(
              color: TenScheme.getPopupBackGround(isDarkMode),
              borderRadius: const BorderRadius.only(
                  topRight: Radius.circular(16),
                  topLeft: Radius.circular(16))),
          child: ConstrainedBox(
            constraints: const BoxConstraints(
              minHeight: 120,
            ),
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                showBar ? _bar(TenScheme.getSecond(isDarkMode)).paddingSymmetric(vertical: 8) : const SizedBox(height: 16),

                child
              ],
            ),
          ),
        ),
      );
    },
  );
}