Set app version to 1.0.0+3; share sheet and markdown viewer polish; remove demo screenshot tooling
Build App Bundle / build (push) Successful in 5m22s
Build App Bundle / build (push) Successful in 5m22s
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -206,6 +206,7 @@ class NooTopBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
style: NooText.title.copyWith(height: 1, color: colors.fg1),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: NooSpace.md),
|
||||
Expanded(child: androidTitleTrailing!),
|
||||
] else
|
||||
Expanded(
|
||||
|
||||
@@ -64,6 +64,8 @@ class NooPersonAccessRow extends StatelessWidget {
|
||||
final String permission;
|
||||
final VoidCallback? onPermissionTap;
|
||||
final String ownerLabel;
|
||||
/// Replaces the owner label / permission pill (e.g. a plain search result).
|
||||
final Widget? trailing;
|
||||
|
||||
const NooPersonAccessRow({
|
||||
super.key,
|
||||
@@ -74,6 +76,7 @@ class NooPersonAccessRow extends StatelessWidget {
|
||||
this.permission = 'Can edit',
|
||||
this.onPermissionTap,
|
||||
this.ownerLabel = 'Owner',
|
||||
this.trailing,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -113,7 +116,9 @@ class NooPersonAccessRow extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
const SizedBox(width: NooSpace.sm),
|
||||
if (owner)
|
||||
if (trailing != null)
|
||||
trailing!
|
||||
else if (owner)
|
||||
Text(ownerLabel, style: NooText.label.copyWith(color: colors.fg3))
|
||||
else
|
||||
NooPermissionPill(label: permission, onTap: onPermissionTap),
|
||||
|
||||
@@ -106,40 +106,51 @@ class _NooSheetBodyState extends State<_NooSheetBody> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SafeArea(
|
||||
child: LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
if (!_needsPeek) {
|
||||
return ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
maxHeight: constraints.maxHeight * _kNooSheetPeekFraction,
|
||||
),
|
||||
child: _buildScrollable(null),
|
||||
);
|
||||
}
|
||||
return DraggableScrollableSheet(
|
||||
initialChildSize: _kNooSheetPeekFraction,
|
||||
minChildSize: _kNooSheetMinFraction,
|
||||
maxChildSize: _kNooSheetMaxFraction,
|
||||
expand: false,
|
||||
builder: (context, scrollController) {
|
||||
// Plain `DraggableScrollableSheet` doesn't dismiss the modal
|
||||
// route on its own when dragged down to its floor - it just
|
||||
// stops resizing there - so pop explicitly once it's been
|
||||
// dragged (near) all the way down, matching a native
|
||||
// peek sheet's swipe-to-dismiss.
|
||||
return NotificationListener<DraggableScrollableNotification>(
|
||||
onNotification: (notification) {
|
||||
if (notification.extent <= notification.minExtent + 0.01) {
|
||||
Navigator.of(context).maybePop();
|
||||
}
|
||||
return false;
|
||||
},
|
||||
child: _buildScrollable(scrollController),
|
||||
// A modal bottom sheet doesn't avoid the keyboard itself, so a focused
|
||||
// field would be covered. Inset by the keyboard and, while it's up, let
|
||||
// the content use all the space above it.
|
||||
final keyboard = MediaQuery.viewInsetsOf(context).bottom;
|
||||
final keyboardUp = keyboard > 0;
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(bottom: keyboard),
|
||||
child: SafeArea(
|
||||
bottom: !keyboardUp,
|
||||
child: LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
if (!_needsPeek) {
|
||||
return ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
maxHeight: keyboardUp
|
||||
? constraints.maxHeight
|
||||
: constraints.maxHeight * _kNooSheetPeekFraction,
|
||||
),
|
||||
child: _buildScrollable(null),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
}
|
||||
return DraggableScrollableSheet(
|
||||
initialChildSize: _kNooSheetPeekFraction,
|
||||
minChildSize: _kNooSheetMinFraction,
|
||||
maxChildSize: _kNooSheetMaxFraction,
|
||||
expand: false,
|
||||
builder: (context, scrollController) {
|
||||
// Plain `DraggableScrollableSheet` doesn't dismiss the modal
|
||||
// route on its own when dragged down to its floor - it just
|
||||
// stops resizing there - so pop explicitly once it's been
|
||||
// dragged (near) all the way down, matching a native
|
||||
// peek sheet's swipe-to-dismiss.
|
||||
return NotificationListener<DraggableScrollableNotification>(
|
||||
onNotification: (notification) {
|
||||
if (notification.extent <= notification.minExtent + 0.01) {
|
||||
Navigator.of(context).maybePop();
|
||||
}
|
||||
return false;
|
||||
},
|
||||
child: _buildScrollable(scrollController),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user