refactor(client): 只读判断统一走 WriteGuard 控件

将各屏内联的 ref.watch(isReadonlyProvider) 只读判断统一改为
WriteGuard(child:) 或 WriteGuard.isReadonly(ref),全项目只读逻辑
单一入口(仅 write_guard.dart 内部保留 provider 读取)。行为不变。

121 测试通过,analyze 无 error。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-17 00:56:31 +08:00
parent 196901b6d3
commit f15692bbd5
8 changed files with 48 additions and 45 deletions
@@ -11,7 +11,7 @@ import '../../widgets/data_table_card.dart';
import '../../widgets/mobile_list_card.dart';
import '../../widgets/page_scaffold.dart';
import '../../core/utils/export_util.dart';
import '../../core/auth/auth_state.dart';
import '../../widgets/write_guard.dart';
class PartnersScreen extends ConsumerStatefulWidget {
const PartnersScreen({super.key});
@@ -167,7 +167,7 @@ class _PartnersScreenState extends ConsumerState<PartnersScreen> {
if (p.phone?.isNotEmpty == true) MobileCardField('电话', p.phone),
if (p.address?.isNotEmpty == true) MobileCardField('地址', p.address),
],
actions: ref.watch(isReadonlyProvider)
actions: WriteGuard.isReadonly(ref)
? const []
: [
TextButton(
@@ -194,7 +194,7 @@ class _PartnersScreenState extends ConsumerState<PartnersScreen> {
mobileCards: partners.map(partnerCard).toList(),
toolbar: Row(
children: [
if (!ref.watch(isReadonlyProvider)) ...[
if (!WriteGuard.isReadonly(ref)) ...[
ElevatedButton.icon(
onPressed: onAdd,
icon: const Icon(Icons.add, size: 16),
@@ -285,7 +285,7 @@ class _PartnersScreenState extends ConsumerState<PartnersScreen> {
)),
DataCell(Row(
mainAxisSize: MainAxisSize.min,
children: ref.watch(isReadonlyProvider)
children: WriteGuard.isReadonly(ref)
? const []
: [
TextButton(