feat:参照研听的基础工程
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_remix/flutter_remix.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:shadcn_ui/shadcn_ui.dart';
|
||||
|
||||
/// 圆形返回钮(对齐 demo `.back`:38×38 圆 + 1px 描边 + chevron)。
|
||||
/// 左对齐到 12px(demo `.dhead` padding-left),用作各页 AppBar 的 leading。
|
||||
class CircleBackButton extends StatelessWidget {
|
||||
const CircleBackButton({
|
||||
super.key,
|
||||
this.onTap,
|
||||
this.fallbackLocation = '/assets',
|
||||
});
|
||||
|
||||
final VoidCallback? onTap;
|
||||
final String fallbackLocation;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final cs = ShadTheme.of(context).colorScheme;
|
||||
return Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(left: 12),
|
||||
child: GestureDetector(
|
||||
behavior: HitTestBehavior.opaque,
|
||||
onTap:
|
||||
onTap ??
|
||||
() {
|
||||
if (context.canPop()) {
|
||||
context.pop();
|
||||
} else {
|
||||
context.go(fallbackLocation);
|
||||
}
|
||||
},
|
||||
child: Container(
|
||||
width: 38,
|
||||
height: 38,
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
border: Border.all(color: cs.border, width: 1),
|
||||
),
|
||||
child: Icon(
|
||||
FlutterRemix.arrow_left_s_line,
|
||||
size: 22,
|
||||
color: cs.foreground,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user