Skip to content

Commit

Permalink
added exit offline cta, hiding other controls, removed json string
Browse files Browse the repository at this point in the history
  • Loading branch information
hrajwade96 committed Oct 4, 2024
1 parent 7150436 commit da11a67
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 56 deletions.
99 changes: 56 additions & 43 deletions packages/devtools_app/lib/src/screens/network/network_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,10 @@ class _NetworkScreenBodyState extends State<NetworkScreenBody>
Widget build(BuildContext context) {
return Column(
children: [
_NetworkProfilerControls(controller: controller),
_NetworkProfilerControls(
controller: controller,
offline: offlineDataController.showingOfflineData.value,
),
const SizedBox(height: intermediateSpacing),
Expanded(
child: _NetworkProfilerBody(controller: controller),
Expand All @@ -152,12 +155,15 @@ class _NetworkScreenBodyState extends State<NetworkScreenBody>
class _NetworkProfilerControls extends StatefulWidget {
const _NetworkProfilerControls({
required this.controller,
required this.offline,
});

static const _includeTextWidth = 810.0;

final NetworkController controller;

final bool offline;

@override
State<_NetworkProfilerControls> createState() =>
_NetworkProfilerControlsState();
Expand Down Expand Up @@ -201,48 +207,55 @@ class _NetworkProfilerControlsState extends State<_NetworkProfilerControls>
final hasRequests = _filteredRequests.isNotEmpty;
return Row(
children: [
StartStopRecordingButton(
recording: _recording,
onPressed: () async =>
await widget.controller.togglePolling(!_recording),
tooltipOverride: _recording
? 'Stop recording network traffic'
: 'Resume recording network traffic',
minScreenWidthForTextBeforeScaling: double.infinity,
gaScreen: gac.network,
gaSelection: _recording ? gac.pause : gac.resume,
),
const SizedBox(width: denseSpacing),
ClearButton(
minScreenWidthForTextBeforeScaling:
_NetworkProfilerControls._includeTextWidth,
gaScreen: gac.network,
gaSelection: gac.clear,
onPressed: widget.controller.clear,
),
const SizedBox(width: defaultSpacing),
DownloadButton(
minScreenWidthForTextBeforeScaling:
_NetworkProfilerControls._includeTextWidth,
onPressed: widget.controller.exportAsHarFile,
gaScreen: gac.network,
gaSelection: gac.NetworkEvent.downloadAsHar.name,
),
const SizedBox(width: defaultSpacing),
const Expanded(child: SizedBox()),
// TODO(kenz): fix focus issue when state is refreshed
SearchField<NetworkController>(
searchController: widget.controller,
searchFieldEnabled: hasRequests,
searchFieldWidth: screenWidth <= MediaSize.xs
? defaultSearchFieldWidth
: wideSearchFieldWidth,
),
const SizedBox(width: denseSpacing),
DevToolsFilterButton(
onPressed: _showFilterDialog,
isFilterActive: _filteredRequests.length != _requests.length,
),
if (widget.offline)
Padding(
padding: const EdgeInsets.only(right: defaultSpacing),
child: ExitOfflineButton(gaScreen: gac.cpuProfiler),
)
else ...[
StartStopRecordingButton(
recording: _recording,
onPressed: () async =>
await widget.controller.togglePolling(!_recording),
tooltipOverride: _recording
? 'Stop recording network traffic'
: 'Resume recording network traffic',
minScreenWidthForTextBeforeScaling: double.infinity,
gaScreen: gac.network,
gaSelection: _recording ? gac.pause : gac.resume,
),
const SizedBox(width: denseSpacing),
ClearButton(
minScreenWidthForTextBeforeScaling:
_NetworkProfilerControls._includeTextWidth,
gaScreen: gac.network,
gaSelection: gac.clear,
onPressed: widget.controller.clear,
),
const SizedBox(width: defaultSpacing),
DownloadButton(
minScreenWidthForTextBeforeScaling:
_NetworkProfilerControls._includeTextWidth,
onPressed: widget.controller.exportAsHarFile,
gaScreen: gac.network,
gaSelection: gac.NetworkEvent.downloadAsHar.name,
),
const SizedBox(width: defaultSpacing),
const Expanded(child: SizedBox()),
// TODO(kenz): fix focus issue when state is refreshed
SearchField<NetworkController>(
searchController: widget.controller,
searchFieldEnabled: hasRequests,
searchFieldWidth: screenWidth <= MediaSize.xs
? defaultSearchFieldWidth
: wideSearchFieldWidth,
),
const SizedBox(width: denseSpacing),
DevToolsFilterButton(
onPressed: _showFilterDialog,
isFilterActive: _filteredRequests.length != _requests.length,
),
],
],
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:convert';

import 'package:devtools_shared/devtools_shared.dart';

import '../../shared/http/http_request_data.dart';
Expand Down Expand Up @@ -57,15 +55,4 @@ class OfflineNetworkData with Serializable {
'recording': recording,
};
}

/// Serialize the instance to a JSON-encoded string.
String toJsonString() {
return jsonEncode(toJson());
}

/// Deserialize a JSON-encoded string to an [OfflineNetworkData] instance.
static OfflineNetworkData fromJsonString(String jsonString) {
final Map<String, dynamic> json = jsonDecode(jsonString);
return OfflineNetworkData.fromJson(json);
}
}

0 comments on commit da11a67

Please sign in to comment.