From 9788f3684f4de401001141df5fe0a9aa031d6048 Mon Sep 17 00:00:00 2001 From: 21pages Date: Wed, 30 Nov 2022 11:13:02 +0800 Subject: [PATCH] judge attribute when parse ab json Signed-off-by: 21pages --- flutter/lib/common/widgets/address_book.dart | 2 +- flutter/lib/desktop/pages/connection_page.dart | 7 +++---- flutter/lib/models/ab_model.dart | 17 ++++++++++++----- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/flutter/lib/common/widgets/address_book.dart b/flutter/lib/common/widgets/address_book.dart index c96dc115a..5b3527fa0 100644 --- a/flutter/lib/common/widgets/address_book.dart +++ b/flutter/lib/common/widgets/address_book.dart @@ -90,7 +90,7 @@ class _AddressBookState extends State { Text(translate(error)), TextButton( onPressed: () { - setState(() {}); + gFFI.abModel.pullAb(); }, child: Text(translate("Retry"))) ], diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index 81f526c12..7500fe99e 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -113,7 +113,7 @@ class _ConnectionPageState extends State delegate: SliverChildListDelegate([ Row( children: [ - _buildRemoteIDTextField(context), + Flexible(child: _buildRemoteIDTextField(context)), ], ).marginOnly(top: 22), SizedBox(height: 12), @@ -237,9 +237,8 @@ class _ConnectionPageState extends State ), ), ); - return Center( - child: Container( - constraints: const BoxConstraints(maxWidth: 600), child: w)); + return Container( + constraints: const BoxConstraints(maxWidth: 600), child: w); } Widget buildStatus() { diff --git a/flutter/lib/models/ab_model.dart b/flutter/lib/models/ab_model.dart index 5a055fd14..afee97e75 100644 --- a/flutter/lib/models/ab_model.dart +++ b/flutter/lib/models/ab_model.dart @@ -34,13 +34,20 @@ class AbModel { if (resp.body.isNotEmpty && resp.body.toLowerCase() != "null") { Map json = jsonDecode(resp.body); if (json.containsKey('error')) { - abError = json['error']; + abError.value = json['error']; } else if (json.containsKey('data')) { final data = jsonDecode(json['data']); - tags.value = data['tags']; - peers.clear(); - for (final peer in data['peers']) { - peers.add(Peer.fromJson(peer)); + if (data != null) { + tags.clear(); + peers.clear(); + if (data['tags'] is List) { + tags.value = data['tags']; + } + if (data['peers'] is List) { + for (final peer in data['peers']) { + peers.add(Peer.fromJson(peer)); + } + } } } return resp.body;