fix(asset-page): fix scroll issue with LayoutBuilder and ConstrainedBox

Wrap content in LayoutBuilder + ConstrainedBox to ensure proper
scrolling behavior when content exceeds viewport height.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-12 13:03:20 -08:00
parent 61da3652f5
commit 82a3c7a2c3
1 changed files with 50 additions and 43 deletions

View File

@ -31,55 +31,62 @@ class AssetPage extends ConsumerWidget {
backgroundColor: Colors.white,
body: SafeArea(
bottom: false,
child: RefreshIndicator(
onRefresh: () async {
ref.invalidate(shareAccountProvider(accountSequence));
},
child: SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: Column(
children: [
//
_buildAppBar(context, user),
//
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: LayoutBuilder(
builder: (context, constraints) {
return RefreshIndicator(
onRefresh: () async {
ref.invalidate(shareAccountProvider(accountSequence));
},
child: SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: constraints.maxHeight),
child: Column(
children: [
const SizedBox(height: 8),
//
accountAsync.when(
data: (account) => _buildTotalAssetCard(account),
loading: () => _buildLoadingCard(),
error: (_, __) => _buildErrorCard('资产加载失败'),
//
_buildAppBar(context, user),
//
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column(
children: [
const SizedBox(height: 8),
//
accountAsync.when(
data: (account) => _buildTotalAssetCard(account),
loading: () => _buildLoadingCard(),
error: (_, __) => _buildErrorCard('资产加载失败'),
),
const SizedBox(height: 24),
//
_buildQuickActions(),
const SizedBox(height: 24),
//
accountAsync.when(
data: (account) => _buildAssetList(account),
loading: () => _buildLoadingCard(),
error: (_, __) => const SizedBox.shrink(),
),
const SizedBox(height: 24),
//
_buildEarningsCard(),
const SizedBox(height: 24),
//
accountAsync.when(
data: (account) => _buildAccountList(account),
loading: () => _buildLoadingCard(),
error: (_, __) => const SizedBox.shrink(),
),
const SizedBox(height: 100),
],
),
),
const SizedBox(height: 24),
//
_buildQuickActions(),
const SizedBox(height: 24),
//
accountAsync.when(
data: (account) => _buildAssetList(account),
loading: () => _buildLoadingCard(),
error: (_, __) => const SizedBox.shrink(),
),
const SizedBox(height: 24),
//
_buildEarningsCard(),
const SizedBox(height: 24),
//
accountAsync.when(
data: (account) => _buildAccountList(account),
loading: () => _buildLoadingCard(),
error: (_, __) => const SizedBox.shrink(),
),
const SizedBox(height: 100),
],
),
),
],
),
),
),
);
},
),
),
);