mirror of
https://github.com/foss42/apidash.git
synced 2025-06-28 20:13:46 +08:00
fix: review changes
This commit is contained in:
7
lib/extensions/context_extensions.dart
Normal file
7
lib/extensions/context_extensions.dart
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import 'package:apidash/consts.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
extension MediaQueryExtension on BuildContext {
|
||||||
|
bool get isMobile =>
|
||||||
|
kIsMobile && MediaQuery.of(this).size.width < kMinWindowSize.width;
|
||||||
|
}
|
@ -1 +1,2 @@
|
|||||||
|
export 'context_extensions.dart';
|
||||||
export 'string_extensions.dart';
|
export 'string_extensions.dart';
|
||||||
|
@ -2,7 +2,7 @@ import 'package:flutter/widgets.dart';
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:inner_drawer/inner_drawer.dart';
|
import 'package:inner_drawer/inner_drawer.dart';
|
||||||
|
|
||||||
final mobileDrawerKeyProvider = Provider<GlobalKey<InnerDrawerState>>(
|
final mobileDrawerKeyProvider = StateProvider<GlobalKey<InnerDrawerState>>(
|
||||||
(ref) => GlobalKey<InnerDrawerState>());
|
(ref) => GlobalKey<InnerDrawerState>());
|
||||||
final navRailIndexStateProvider = StateProvider<int>((ref) => 0);
|
final navRailIndexStateProvider = StateProvider<int>((ref) => 0);
|
||||||
final selectedIdEditStateProvider = StateProvider<String?>((ref) => null);
|
final selectedIdEditStateProvider = StateProvider<String?>((ref) => null);
|
||||||
|
@ -4,6 +4,7 @@ import 'package:apidash/providers/providers.dart';
|
|||||||
import 'package:apidash/widgets/widgets.dart';
|
import 'package:apidash/widgets/widgets.dart';
|
||||||
import 'package:apidash/models/models.dart';
|
import 'package:apidash/models/models.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
|
import 'package:apidash/extensions/extensions.dart' show MediaQueryExtension;
|
||||||
|
|
||||||
class CollectionPane extends ConsumerWidget {
|
class CollectionPane extends ConsumerWidget {
|
||||||
const CollectionPane({
|
const CollectionPane({
|
||||||
@ -142,8 +143,6 @@ class _RequestListState extends ConsumerState<RequestList> {
|
|||||||
final alwaysShowCollectionPaneScrollbar = ref.watch(settingsProvider
|
final alwaysShowCollectionPaneScrollbar = ref.watch(settingsProvider
|
||||||
.select((value) => value.alwaysShowCollectionPaneScrollbar));
|
.select((value) => value.alwaysShowCollectionPaneScrollbar));
|
||||||
final filterQuery = ref.watch(searchQueryProvider).trim();
|
final filterQuery = ref.watch(searchQueryProvider).trim();
|
||||||
final isMobile =
|
|
||||||
kIsMobile && MediaQuery.sizeOf(context).width < kMinWindowSize.width;
|
|
||||||
|
|
||||||
return Scrollbar(
|
return Scrollbar(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
@ -151,7 +150,7 @@ class _RequestListState extends ConsumerState<RequestList> {
|
|||||||
radius: const Radius.circular(12),
|
radius: const Radius.circular(12),
|
||||||
child: filterQuery.isEmpty
|
child: filterQuery.isEmpty
|
||||||
? ReorderableListView.builder(
|
? ReorderableListView.builder(
|
||||||
padding: isMobile
|
padding: context.isMobile
|
||||||
? EdgeInsets.only(
|
? EdgeInsets.only(
|
||||||
bottom: MediaQuery.paddingOf(context).bottom,
|
bottom: MediaQuery.paddingOf(context).bottom,
|
||||||
right: 8,
|
right: 8,
|
||||||
|
@ -1,19 +1,18 @@
|
|||||||
import 'package:apidash/screens/home_page/editor_pane/details_card/request_pane/request_pane.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:apidash/providers/providers.dart';
|
import 'package:apidash/providers/providers.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
import 'details_card/details_card.dart';
|
import 'details_card/details_card.dart';
|
||||||
import 'url_card.dart';
|
import 'url_card.dart';
|
||||||
|
import 'package:apidash/screens/home_page/editor_pane/details_card/request_pane/request_pane.dart';
|
||||||
|
import 'package:apidash/extensions/extensions.dart' show MediaQueryExtension;
|
||||||
|
|
||||||
class RequestEditor extends StatelessWidget {
|
class RequestEditor extends StatelessWidget {
|
||||||
const RequestEditor({super.key});
|
const RequestEditor({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isMobile =
|
return context.isMobile
|
||||||
kIsMobile && MediaQuery.sizeOf(context).width < kMinWindowSize.width;
|
|
||||||
return isMobile
|
|
||||||
? const Padding(
|
? const Padding(
|
||||||
padding: kPb10,
|
padding: kPb10,
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -3,14 +3,13 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||||||
import 'package:apidash/providers/providers.dart';
|
import 'package:apidash/providers/providers.dart';
|
||||||
import 'package:apidash/widgets/widgets.dart';
|
import 'package:apidash/widgets/widgets.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
|
import 'package:apidash/extensions/extensions.dart' show MediaQueryExtension;
|
||||||
|
|
||||||
class EditorPaneRequestURLCard extends StatelessWidget {
|
class EditorPaneRequestURLCard extends StatelessWidget {
|
||||||
const EditorPaneRequestURLCard({super.key});
|
const EditorPaneRequestURLCard({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isMobile =
|
|
||||||
kIsMobile && MediaQuery.sizeOf(context).width < kMinWindowSize.width;
|
|
||||||
return Card(
|
return Card(
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
@ -22,9 +21,9 @@ class EditorPaneRequestURLCard extends StatelessWidget {
|
|||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.symmetric(
|
padding: EdgeInsets.symmetric(
|
||||||
vertical: 5,
|
vertical: 5,
|
||||||
horizontal: !isMobile ? 20 : 6,
|
horizontal: !context.isMobile ? 20 : 6,
|
||||||
),
|
),
|
||||||
child: isMobile
|
child: context.isMobile
|
||||||
? const Row(
|
? const Row(
|
||||||
children: [
|
children: [
|
||||||
DropdownButtonHTTPMethod(),
|
DropdownButtonHTTPMethod(),
|
||||||
|
@ -6,9 +6,9 @@ import 'package:inner_drawer/inner_drawer.dart';
|
|||||||
import 'package:flex_color_scheme/flex_color_scheme.dart';
|
import 'package:flex_color_scheme/flex_color_scheme.dart';
|
||||||
import '../../providers/providers.dart';
|
import '../../providers/providers.dart';
|
||||||
import 'navbar.dart';
|
import 'navbar.dart';
|
||||||
import 'left_drawer.dart';
|
import 'widgets/left_drawer.dart';
|
||||||
import 'requests_page/requests_page.dart';
|
import 'requests_page.dart';
|
||||||
import 'requests_page/response_drawer.dart';
|
import 'response_drawer.dart';
|
||||||
import '../home_page/collection_pane.dart';
|
import '../home_page/collection_pane.dart';
|
||||||
|
|
||||||
class MobileDashboard extends ConsumerStatefulWidget {
|
class MobileDashboard extends ConsumerStatefulWidget {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import 'package:apidash/providers/ui_providers.dart';
|
import 'package:apidash/providers/ui_providers.dart';
|
||||||
import 'package:apidash/screens/mobile/page_base.dart';
|
import 'package:apidash/screens/mobile/widgets/page_base.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import '../settings_page.dart';
|
import '../settings_page.dart';
|
||||||
|
@ -5,11 +5,11 @@ import 'package:apidash/providers/providers.dart';
|
|||||||
import 'package:apidash/utils/http_utils.dart';
|
import 'package:apidash/utils/http_utils.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
import 'package:apidash/widgets/widgets.dart';
|
import 'package:apidash/widgets/widgets.dart';
|
||||||
import '../../home_page/editor_pane/editor_request.dart';
|
import '../home_page/editor_pane/editor_request.dart';
|
||||||
import '../../home_page/editor_pane/editor_pane.dart';
|
import '../home_page/editor_pane/editor_pane.dart';
|
||||||
import '../../home_page/editor_pane/url_card.dart';
|
import '../home_page/editor_pane/url_card.dart';
|
||||||
import '../../home_page/editor_pane/details_card/code_pane.dart';
|
import '../home_page/editor_pane/details_card/code_pane.dart';
|
||||||
import '../page_base.dart';
|
import 'widgets/page_base.dart';
|
||||||
|
|
||||||
class RequestsPage extends StatelessWidget {
|
class RequestsPage extends StatelessWidget {
|
||||||
final GlobalKey<InnerDrawerState> innerDrawerKey;
|
final GlobalKey<InnerDrawerState> innerDrawerKey;
|
||||||
@ -64,8 +64,7 @@ class RequestTitle extends ConsumerWidget {
|
|||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final id = ref.watch(selectedIdStateProvider);
|
final id = ref.watch(selectedIdStateProvider);
|
||||||
final name = getRequestTitleFromUrl(
|
final name = getRequestTitleFromUrl(
|
||||||
ref.watch(selectedRequestModelProvider.select((value) => value?.name)),
|
ref.watch(selectedRequestModelProvider.select((value) => value?.name)));
|
||||||
capitalize: true);
|
|
||||||
return ClipRRect(
|
return ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
child: Material(
|
child: Material(
|
@ -1,5 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../../home_page/editor_pane/details_card/response_pane.dart';
|
import '../home_page/editor_pane/details_card/response_pane.dart';
|
||||||
|
|
||||||
class ResponseDrawer extends StatelessWidget {
|
class ResponseDrawer extends StatelessWidget {
|
||||||
const ResponseDrawer({super.key});
|
const ResponseDrawer({super.key});
|
@ -4,6 +4,7 @@ import '../providers/providers.dart';
|
|||||||
import '../widgets/widgets.dart';
|
import '../widgets/widgets.dart';
|
||||||
import '../common/utils.dart';
|
import '../common/utils.dart';
|
||||||
import '../consts.dart';
|
import '../consts.dart';
|
||||||
|
import 'package:apidash/extensions/extensions.dart' show MediaQueryExtension;
|
||||||
|
|
||||||
class SettingsPage extends ConsumerWidget {
|
class SettingsPage extends ConsumerWidget {
|
||||||
const SettingsPage({super.key});
|
const SettingsPage({super.key});
|
||||||
@ -13,12 +14,10 @@ class SettingsPage extends ConsumerWidget {
|
|||||||
final settings = ref.watch(settingsProvider);
|
final settings = ref.watch(settingsProvider);
|
||||||
final clearingData = ref.watch(clearDataStateProvider);
|
final clearingData = ref.watch(clearDataStateProvider);
|
||||||
var sm = ScaffoldMessenger.of(context);
|
var sm = ScaffoldMessenger.of(context);
|
||||||
final isMobile =
|
|
||||||
kIsMobile && MediaQuery.sizeOf(context).width < kMinWindowSize.width;
|
|
||||||
return Column(
|
return Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
!isMobile
|
!context.isMobile
|
||||||
? Padding(
|
? Padding(
|
||||||
padding: kPh20t40,
|
padding: kPh20t40,
|
||||||
child: kIsDesktop
|
child: kIsDesktop
|
||||||
|
@ -7,14 +7,14 @@ import '../models/models.dart';
|
|||||||
import 'convert_utils.dart' show rowsToMap;
|
import 'convert_utils.dart' show rowsToMap;
|
||||||
import '../consts.dart';
|
import '../consts.dart';
|
||||||
|
|
||||||
String getRequestTitleFromUrl(String? url, {bool capitalize = false}) {
|
String getRequestTitleFromUrl(String? url) {
|
||||||
if (url == null || url.trim() == "") {
|
if (url == null || url.trim() == "") {
|
||||||
return !capitalize ? "untitled" : "Untitled";
|
return "untitled";
|
||||||
}
|
}
|
||||||
if (url.contains("://")) {
|
if (url.contains("://")) {
|
||||||
String rem = url.split("://")[1];
|
String rem = url.split("://")[1];
|
||||||
if (rem.trim() == "") {
|
if (rem.trim() == "") {
|
||||||
return !capitalize ? "untitled" : "Untitled";
|
return "untitled";
|
||||||
}
|
}
|
||||||
return rem;
|
return rem;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:apidash/utils/utils.dart';
|
import 'package:apidash/utils/utils.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
|
import 'package:apidash/extensions/extensions.dart' show MediaQueryExtension;
|
||||||
|
|
||||||
class DropdownButtonHttpMethod extends StatelessWidget {
|
class DropdownButtonHttpMethod extends StatelessWidget {
|
||||||
const DropdownButtonHttpMethod({
|
const DropdownButtonHttpMethod({
|
||||||
@ -15,8 +16,6 @@ class DropdownButtonHttpMethod extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final surfaceColor = Theme.of(context).colorScheme.surface;
|
final surfaceColor = Theme.of(context).colorScheme.surface;
|
||||||
final isMobile =
|
|
||||||
kIsMobile && MediaQuery.sizeOf(context).width < kMinWindowSize.width;
|
|
||||||
return DropdownButton<HTTPVerb>(
|
return DropdownButton<HTTPVerb>(
|
||||||
focusColor: surfaceColor,
|
focusColor: surfaceColor,
|
||||||
value: method,
|
value: method,
|
||||||
@ -31,11 +30,10 @@ class DropdownButtonHttpMethod extends StatelessWidget {
|
|||||||
return DropdownMenuItem<HTTPVerb>(
|
return DropdownMenuItem<HTTPVerb>(
|
||||||
value: value,
|
value: value,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.only(left: isMobile ? 8 : 16),
|
padding: EdgeInsets.only(left: context.isMobile ? 8 : 16),
|
||||||
child: Text(
|
child: Text(
|
||||||
value.name.toUpperCase(),
|
value.name.toUpperCase(),
|
||||||
style: kCodeStyle.copyWith(
|
style: kCodeStyle.copyWith(
|
||||||
fontSize: isMobile ? 13 : null,
|
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: getHTTPMethodColor(
|
color: getHTTPMethodColor(
|
||||||
value,
|
value,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
import 'tabs.dart';
|
import 'tabs.dart';
|
||||||
|
import 'package:apidash/extensions/extensions.dart' show MediaQueryExtension;
|
||||||
|
|
||||||
class RequestPane extends StatefulWidget {
|
class RequestPane extends StatefulWidget {
|
||||||
const RequestPane({
|
const RequestPane({
|
||||||
@ -45,11 +46,9 @@ class _RequestPaneState extends State<RequestPane>
|
|||||||
if (widget.tabIndex != null) {
|
if (widget.tabIndex != null) {
|
||||||
_controller.index = widget.tabIndex!;
|
_controller.index = widget.tabIndex!;
|
||||||
}
|
}
|
||||||
final isMobile =
|
|
||||||
kIsMobile && MediaQuery.sizeOf(context).width < kMinWindowSize.width;
|
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
isMobile
|
context.isMobile
|
||||||
? const SizedBox.shrink()
|
? const SizedBox.shrink()
|
||||||
: Padding(
|
: Padding(
|
||||||
padding: kP8,
|
padding: kP8,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
|
import 'package:apidash/extensions/extensions.dart' show MediaQueryExtension;
|
||||||
|
|
||||||
class TabLabel extends StatelessWidget {
|
class TabLabel extends StatelessWidget {
|
||||||
const TabLabel({
|
const TabLabel({
|
||||||
@ -12,10 +13,8 @@ class TabLabel extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isMobile =
|
|
||||||
kIsMobile && MediaQuery.sizeOf(context).width < kMinWindowSize.width;
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: isMobile ? kMobileTabHeight : kTabHeight,
|
height: context.isMobile ? kMobileTabHeight : kTabHeight,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
Center(
|
Center(
|
||||||
|
Reference in New Issue
Block a user