config navigation list

This commit is contained in:
appflowy 2021-07-27 23:10:39 +08:00
parent af9421ed1c
commit 248ce74832
13 changed files with 331 additions and 158 deletions

View File

@ -23,7 +23,8 @@ class HomePageStack {
} }
void setStackView(HomeStackView? stackView) { void setStackView(HomeStackView? stackView) {
_bloc.add(PageStackEvent.setStackView(stackView ?? const BlankStackView())); _bloc.add(PageStackEvent.setStackView(
stackView ?? const AnnouncementStackView()));
} }
Widget stackTopBar() { Widget stackTopBar() {
@ -61,15 +62,17 @@ List<Widget> _buildStackWidget(HomeStackView stackView) {
if (viewType == stackView.type) { if (viewType == stackView.type) {
switch (stackView.type) { switch (stackView.type) {
case ViewType.Blank: case ViewType.Blank:
return BlankPage(stackView: stackView as BlankStackView); return AnnouncementPage(
stackView: stackView as AnnouncementStackView);
case ViewType.Doc: case ViewType.Doc:
final docView = stackView as DocPageStackView; final docView = stackView as DocPageStackView;
return DocPage(key: ValueKey(docView.view.id), stackView: docView); return DocPage(key: ValueKey(docView.view.id), stackView: docView);
default: default:
return BlankPage(stackView: stackView as BlankStackView); return AnnouncementPage(
stackView: stackView as AnnouncementStackView);
} }
} else { } else {
return const BlankPage(stackView: BlankStackView()); return const AnnouncementPage(stackView: AnnouncementStackView());
} }
}).toList(); }).toList();
} }
@ -77,11 +80,11 @@ List<Widget> _buildStackWidget(HomeStackView stackView) {
HomeStackView stackViewFromView(View view) { HomeStackView stackViewFromView(View view) {
switch (view.viewType) { switch (view.viewType) {
case ViewType.Blank: case ViewType.Blank:
return const BlankStackView(); return const AnnouncementStackView();
case ViewType.Doc: case ViewType.Doc:
return DocPageStackView(view); return DocPageStackView(view);
default: default:
return const BlankStackView(); return const AnnouncementStackView();
} }
} }

View File

@ -30,6 +30,6 @@ abstract class PageStackState implements _$PageStackState {
}) = _PageStackState; }) = _PageStackState;
factory PageStackState.initial() => const PageStackState( factory PageStackState.initial() => const PageStackState(
stackView: BlankStackView(), stackView: AnnouncementStackView(),
); );
} }

View File

@ -60,16 +60,13 @@ class AppWidget extends MenuItem {
} }
ExpandableNotifier expandableWrapper(BuildContext context, Widget child) { ExpandableNotifier expandableWrapper(BuildContext context, Widget child) {
final controller = ExpandableController(initialExpanded: false);
return ExpandableNotifier( return ExpandableNotifier(
controller: controller,
child: ScrollOnExpand( child: ScrollOnExpand(
scrollOnExpand: true, scrollOnExpand: true,
scrollOnCollapse: false, scrollOnCollapse: false,
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
ExpandablePanel( ExpandablePanel(
// controller: controller,
theme: const ExpandableThemeData( theme: const ExpandableThemeData(
headerAlignment: ExpandablePanelHeaderAlignment.center, headerAlignment: ExpandablePanelHeaderAlignment.center,
tapBodyToExpand: false, tapBodyToExpand: false,
@ -78,7 +75,7 @@ class AppWidget extends MenuItem {
iconPadding: EdgeInsets.zero, iconPadding: EdgeInsets.zero,
hasIcon: false, hasIcon: false,
), ),
header: AppHeader(app, controller: controller), header: AppHeader(app),
expanded: child, expanded: child,
collapsed: const SizedBox(), collapsed: const SizedBox(),
), ),
@ -100,12 +97,10 @@ class AppWidget extends MenuItem {
} }
class AppHeader extends StatelessWidget { class AppHeader extends StatelessWidget {
final ExpandableController controller;
final App app; final App app;
const AppHeader( const AppHeader(
this.app, { this.app, {
Key? key, Key? key,
required this.controller,
}) : super(key: key); }) : super(key: key);
@override @override
@ -115,7 +110,11 @@ class AppHeader extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
InkWell( InkWell(
onTap: () => controller.toggle(), onTap: () {
ExpandableController.of(context,
rebuildOnChange: false, required: true)
?.toggle();
},
child: ExpandableIcon( child: ExpandableIcon(
theme: ExpandableThemeData( theme: ExpandableThemeData(
expandIcon: Icons.arrow_drop_up, expandIcon: Icons.arrow_drop_up,

View File

@ -6,6 +6,7 @@ import 'package:flowy_infra_ui/widget/error_page.dart';
import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flowy_infra_ui/style_widget/styled_progress_indicator.dart';
class DocPage extends HomeStackWidget { class DocPage extends HomeStackWidget {
const DocPage({Key? key, required DocPageStackView stackView}) const DocPage({Key? key, required DocPageStackView stackView})
@ -29,7 +30,7 @@ class _DocPageState extends State<DocPage> {
BlocBuilder<DocWatchBloc, DocWatchState>(builder: (context, state) { BlocBuilder<DocWatchBloc, DocWatchState>(builder: (context, state) {
assert(widget.stackView is DocPageStackView); assert(widget.stackView is DocPageStackView);
return state.map( return state.map(
loading: (_) => const CircularProgressIndicator.adaptive(), loading: (_) => const StyledProgressIndicator(),
loadDoc: (s) => EditorWdiget(doc: s.doc), loadDoc: (s) => EditorWdiget(doc: s.doc),
loadFail: (s) => FlowyErrorPage(s.error.toString()), loadFail: (s) => FlowyErrorPage(s.error.toString()),
); );

View File

@ -2,30 +2,30 @@ import 'package:app_flowy/workspace/domain/page_stack/page_stack.dart';
import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class BlankStackView extends HomeStackView { class AnnouncementStackView extends HomeStackView {
const BlankStackView() : super(type: ViewType.Blank, title: 'Blank'); const AnnouncementStackView() : super(type: ViewType.Blank, title: 'Blank');
@override @override
List<Object> get props => []; List<Object> get props => [];
} }
class BlankPage extends HomeStackWidget { class AnnouncementPage extends HomeStackWidget {
const BlankPage({Key? key, required BlankStackView stackView}) const AnnouncementPage({Key? key, required AnnouncementStackView stackView})
: super(key: key, stackView: stackView); : super(key: key, stackView: stackView);
@override @override
State<StatefulWidget> createState() => _BlankPageState(); State<StatefulWidget> createState() => _AnnouncementPage();
} }
class _BlankPageState extends State<BlankPage> { class _AnnouncementPage extends State<AnnouncementPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return SizedBox.expand(
color: Theme.of(context).colorScheme.primary, child: Container(
child: const Center( color: Theme.of(context).colorScheme.surface,
child: Text( child: Padding(
'Hello AppFlowy', padding: const EdgeInsets.all(10),
style: TextStyle(fontSize: 60), child: Container(),
), ),
), ),
); );

View File

@ -156,6 +156,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
loading_indicator:
dependency: transitive
description:
name: loading_indicator
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
logger: logger:
dependency: transitive dependency: transitive
description: description:
@ -296,4 +303,4 @@ packages:
version: "2.1.0" version: "2.1.0"
sdks: sdks:
dart: ">=2.12.0 <3.0.0" dart: ">=2.12.0 <3.0.0"
flutter: ">=1.20.0" flutter: ">=2.0.0"

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// ignore: unused_import
import 'package:flowy_infra/time/duration.dart'; import 'package:flowy_infra/time/duration.dart';
typedef HoverBuilder = Widget Function(BuildContext context, bool onHover); typedef HoverBuilder = Widget Function(BuildContext context, bool onHover);
@ -36,19 +37,17 @@ class _StyledHoverState extends State<StyledHover> {
width: widget.borderWidth, width: widget.borderWidth,
); );
final animatedDuration = .1.seconds;
return MouseRegion( return MouseRegion(
cursor: SystemMouseCursors.click, cursor: SystemMouseCursors.click,
onEnter: (p) => setOnHover(true), onEnter: (p) => setOnHover(true),
onExit: (p) => setOnHover(false), onExit: (p) => setOnHover(false),
child: AnimatedContainer( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: hoverBorder, border: hoverBorder,
color: hoverColor, color: hoverColor,
borderRadius: widget.borderRadius, borderRadius: widget.borderRadius,
), ),
duration: animatedDuration, // duration: .1.seconds,
child: widget.builder(context, _onHover), child: widget.builder(context, _onHover),
), ),
); );

View File

@ -0,0 +1,107 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
typedef NaviAction = void Function(String);
abstract class NaviItem {
String get identifier;
NaviAction get action;
}
class StyledNavigationController extends ChangeNotifier {
List<NaviItem> naviItems;
StyledNavigationController({this.naviItems = const []});
}
class StyledNavigationList extends StatelessWidget {
const StyledNavigationList({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => StyledNavigationController()),
],
child: Consumer(builder: (ctx, StyledNavigationController ctrl, child) {
return Row(
children: _buildNaviItemWidget(ctrl.naviItems),
);
}),
);
}
List<Widget> _buildNaviItemWidget(List<NaviItem> items) {
if (items.isEmpty) {
return [];
}
List<NaviItem> newItems = _selectNaviItem(items);
Widget last = NaviItemWidget(newItems.removeLast());
List<Widget> widgets = newItems
.map(
(item) => NaviItemDivider(
child: NaviItemWidget(item),
),
)
.toList();
widgets.add(last);
return widgets;
}
List<NaviItem> _selectNaviItem(List<NaviItem> items) {
final length = items.length;
if (length > 4) {
final ellipsisItems = items.getRange(1, length - 2).toList();
return [
items[0],
EllipsisNaviItem(items: ellipsisItems),
items[length - 2],
items[length - 1]
];
} else {
return items;
}
}
}
class NaviItemWidget extends StatelessWidget {
final NaviItem item;
const NaviItemWidget(this.item, {Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: null,
);
}
}
class NaviItemDivider extends StatelessWidget {
final Widget child;
const NaviItemDivider({Key? key, required this.child}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
children: [child, const Text('/')],
);
}
}
class EllipsisNaviItem extends NaviItem {
final List<NaviItem> items;
EllipsisNaviItem({
required this.items,
});
@override
// TODO: implement action
NaviAction get action => throw UnimplementedError();
@override
// TODO: implement identifier
String get identifier => throw UnimplementedError();
}

View File

@ -0,0 +1,34 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:loading_indicator/loading_indicator.dart';
List<Color> _kDefaultRainbowColors = const [
Colors.red,
Colors.orange,
Colors.yellow,
Colors.green,
Colors.blue,
Colors.indigo,
Colors.purple,
];
// CircularProgressIndicator()
class StyledProgressIndicator extends StatelessWidget {
const StyledProgressIndicator({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox.expand(
child: Center(
child: SizedBox(
width: 60,
child: LoadingIndicator(
indicatorType: Indicator.pacman,
colors: _kDefaultRainbowColors,
strokeWidth: 4.0,
),
),
),
);
}
}

View File

@ -142,6 +142,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
loading_indicator:
dependency: "direct main"
description:
name: loading_indicator
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
logger: logger:
dependency: transitive dependency: transitive
description: description:
@ -282,4 +289,4 @@ packages:
version: "2.1.0" version: "2.1.0"
sdks: sdks:
dart: ">=2.12.0 <3.0.0" dart: ">=2.12.0 <3.0.0"
flutter: ">=1.20.0" flutter: ">=2.0.0"

View File

@ -19,6 +19,7 @@ dependencies:
styled_widget: '>=0.3.1' styled_widget: '>=0.3.1'
equatable: '>=2.0.2' equatable: '>=2.0.2'
animations: ^2.0.0 animations: ^2.0.0
loading_indicator: ^3.0.1
# Federated Platform Interface # Federated Platform Interface
flowy_infra_ui_platform_interface: flowy_infra_ui_platform_interface:

View File

@ -10,17 +10,25 @@ import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb; import 'package:protobuf/protobuf.dart' as $pb;
class ViewType extends $pb.ProtobufEnum { class ViewType extends $pb.ProtobufEnum {
static const ViewType Blank = ViewType._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'Blank'); static const ViewType Blank = ViewType._(
static const ViewType Doc = ViewType._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'Doc'); 0,
const $core.bool.fromEnvironment('protobuf.omit_enum_names')
? ''
: 'Blank');
static const ViewType Doc = ViewType._(
1,
const $core.bool.fromEnvironment('protobuf.omit_enum_names')
? ''
: 'Doc');
static const $core.List<ViewType> values = <ViewType> [ static const $core.List<ViewType> values = <ViewType>[
Blank, Blank,
Doc, Doc,
]; ];
static final $core.Map<$core.int, ViewType> _byValue = $pb.ProtobufEnum.initByValue(values); static final $core.Map<$core.int, ViewType> _byValue =
$pb.ProtobufEnum.initByValue(values);
static ViewType? valueOf($core.int value) => _byValue[value]; static ViewType? valueOf($core.int value) => _byValue[value];
const ViewType._($core.int v, $core.String n) : super(v, n); const ViewType._($core.int v, $core.String n) : super(v, n);
} }

View File

@ -5,231 +5,231 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _fe_analyzer_shared name: _fe_analyzer_shared
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "22.0.0" version: "23.0.0"
analyzer: analyzer:
dependency: transitive dependency: transitive
description: description:
name: analyzer name: analyzer
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.7.2" version: "2.0.0"
animations: animations:
dependency: transitive dependency: transitive
description: description:
name: animations name: animations
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
args: args:
dependency: transitive dependency: transitive
description: description:
name: args name: args
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.1" version: "2.2.0"
async: async:
dependency: transitive dependency: transitive
description: description:
name: async name: async
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.7.0" version: "2.7.0"
bloc: bloc:
dependency: transitive dependency: transitive
description: description:
name: bloc name: bloc
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "7.0.0" version: "7.0.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
name: boolean_selector name: boolean_selector
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
build: build:
dependency: transitive dependency: transitive
description: description:
name: build name: build
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.3" version: "2.0.3"
build_config: build_config:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
build_resolvers: build_resolvers:
dependency: transitive dependency: transitive
description: description:
name: build_resolvers name: build_resolvers
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.4" version: "2.0.4"
build_runner: build_runner:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.6" version: "2.0.6"
build_runner_core: build_runner_core:
dependency: transitive dependency: transitive
description: description:
name: build_runner_core name: build_runner_core
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "7.0.1" version: "7.0.1"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
name: built_collection name: built_collection
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.1.0" version: "5.1.0"
built_value: built_value:
dependency: transitive dependency: transitive
description: description:
name: built_value name: built_value
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "8.1.1" version: "8.1.1"
characters: characters:
dependency: transitive dependency: transitive
description: description:
name: characters name: characters
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
charcode: charcode:
dependency: transitive dependency: transitive
description: description:
name: charcode name: charcode
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.1" version: "1.3.1"
checked_yaml: checked_yaml:
dependency: transitive dependency: transitive
description: description:
name: checked_yaml name: checked_yaml
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
cli_util: cli_util:
dependency: transitive dependency: transitive
description: description:
name: cli_util name: cli_util
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.3.3" version: "0.3.3"
clock: clock:
dependency: transitive dependency: transitive
description: description:
name: clock name: clock
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
code_builder: code_builder:
dependency: transitive dependency: transitive
description: description:
name: code_builder name: code_builder
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.0" version: "4.1.0"
collection: collection:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.15.0" version: "1.15.0"
convert: convert:
dependency: transitive dependency: transitive
description: description:
name: convert name: convert
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
name: crypto name: crypto
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
cupertino_icons: cupertino_icons:
dependency: "direct main" dependency: "direct main"
description: description:
name: cupertino_icons name: cupertino_icons
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.3" version: "1.0.3"
dart_style: dart_style:
dependency: transitive dependency: transitive
description: description:
name: dart_style name: dart_style
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.2" version: "2.0.3"
dartz: dartz:
dependency: transitive dependency: transitive
description: description:
name: dartz name: dartz
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.10.0-nullsafety.2" version: "0.10.0-nullsafety.2"
equatable: equatable:
dependency: "direct main" dependency: "direct main"
description: description:
name: equatable name: equatable
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.3" version: "2.0.3"
expandable: expandable:
dependency: "direct main" dependency: "direct main"
description: description:
name: expandable name: expandable
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.0.1" version: "5.0.1"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
name: ffi name: ffi
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.2" version: "1.1.2"
file: file:
dependency: transitive dependency: transitive
description: description:
name: file name: file
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "6.1.2" version: "6.1.2"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
name: fixnum name: fixnum
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
flowy_editor: flowy_editor:
@ -283,42 +283,42 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_bloc name: flutter_bloc
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "7.0.1" version: "7.0.1"
flutter_colorpicker: flutter_colorpicker:
dependency: transitive dependency: transitive
description: description:
name: flutter_colorpicker name: flutter_colorpicker
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.5.0" version: "0.5.0"
flutter_keyboard_visibility: flutter_keyboard_visibility:
dependency: transitive dependency: transitive
description: description:
name: flutter_keyboard_visibility name: flutter_keyboard_visibility
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.0.2" version: "5.0.3"
flutter_keyboard_visibility_platform_interface: flutter_keyboard_visibility_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: flutter_keyboard_visibility_platform_interface name: flutter_keyboard_visibility_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
flutter_keyboard_visibility_web: flutter_keyboard_visibility_web:
dependency: transitive dependency: transitive
description: description:
name: flutter_keyboard_visibility_web name: flutter_keyboard_visibility_web
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: flutter_lints name: flutter_lints
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.4" version: "1.0.4"
flutter_test: flutter_test:
@ -335,196 +335,203 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: freezed name: freezed
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.14.2" version: "0.14.3"
freezed_annotation: freezed_annotation:
dependency: "direct main" dependency: "direct main"
description: description:
name: freezed_annotation name: freezed_annotation
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.14.2" version: "0.14.3"
frontend_server_client: frontend_server_client:
dependency: transitive dependency: transitive
description: description:
name: frontend_server_client name: frontend_server_client
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
get_it: get_it:
dependency: "direct main" dependency: "direct main"
description: description:
name: get_it name: get_it
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "7.2.0" version: "7.2.0"
glob: glob:
dependency: transitive dependency: transitive
description: description:
name: glob name: glob
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
graphs: graphs:
dependency: transitive dependency: transitive
description: description:
name: graphs name: graphs
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
http_multi_server: http_multi_server:
dependency: transitive dependency: transitive
description: description:
name: http_multi_server name: http_multi_server
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.0" version: "4.0.0"
io: io:
dependency: transitive dependency: transitive
description: description:
name: io name: io
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.3" version: "1.0.3"
isolates: isolates:
dependency: transitive dependency: transitive
description: description:
name: isolates name: isolates
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.3+8" version: "3.0.3+8"
js: js:
dependency: transitive dependency: transitive
description: description:
name: js name: js
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.6.3" version: "0.6.3"
json_annotation: json_annotation:
dependency: transitive dependency: transitive
description: description:
name: json_annotation name: json_annotation
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.1" version: "4.1.0"
lint: lint:
dependency: transitive dependency: transitive
description: description:
name: lint name: lint
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.5.3" version: "1.5.3"
lints: lints:
dependency: transitive dependency: transitive
description: description:
name: lints name: lints
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
loading_indicator:
dependency: transitive
description:
name: loading_indicator
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.1"
logger: logger:
dependency: transitive dependency: transitive
description: description:
name: logger name: logger
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
logging: logging:
dependency: transitive dependency: transitive
description: description:
name: logging name: logging
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.12.10" version: "0.12.10"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.7.0" version: "1.7.0"
mime: mime:
dependency: transitive dependency: transitive
description: description:
name: mime name: mime
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
nested: nested:
dependency: transitive dependency: transitive
description: description:
name: nested name: nested
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
package_config: package_config:
dependency: transitive dependency: transitive
description: description:
name: package_config name: package_config
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
path: path:
dependency: transitive dependency: transitive
description: description:
name: path name: path
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
path_provider: path_provider:
dependency: "direct main" dependency: "direct main"
description: description:
name: path_provider name: path_provider
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.2" version: "2.0.2"
path_provider_linux: path_provider_linux:
dependency: transitive dependency: transitive
description: description:
name: path_provider_linux name: path_provider_linux
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
path_provider_macos: path_provider_macos:
dependency: transitive dependency: transitive
description: description:
name: path_provider_macos name: path_provider_macos
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
path_provider_platform_interface: path_provider_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: path_provider_platform_interface name: path_provider_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
path_provider_windows: path_provider_windows:
dependency: transitive dependency: transitive
description: description:
name: path_provider_windows name: path_provider_windows
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
pedantic: pedantic:
dependency: transitive dependency: transitive
description: description:
name: pedantic name: pedantic
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.11.1" version: "1.11.1"
photo_view: photo_view:
@ -540,91 +547,91 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: platform name: platform
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
plugin_platform_interface: plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: plugin_platform_interface name: plugin_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
pool: pool:
dependency: transitive dependency: transitive
description: description:
name: pool name: pool
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.5.0" version: "1.5.0"
process: process:
dependency: transitive dependency: transitive
description: description:
name: process name: process
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.2.1" version: "4.2.3"
protobuf: protobuf:
dependency: transitive dependency: transitive
description: description:
name: protobuf name: protobuf
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
provider: provider:
dependency: transitive dependency: transitive
description: description:
name: provider name: provider
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.0.0" version: "5.0.0"
pub_semver: pub_semver:
dependency: transitive dependency: transitive
description: description:
name: pub_semver name: pub_semver
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
pubspec_parse: pubspec_parse:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
quiver: quiver:
dependency: transitive dependency: transitive
description: description:
name: quiver name: quiver
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
quiver_hashcode: quiver_hashcode:
dependency: transitive dependency: transitive
description: description:
name: quiver_hashcode name: quiver_hashcode
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
shelf: shelf:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
name: shelf_web_socket name: shelf_web_socket
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
sized_context: sized_context:
dependency: "direct main" dependency: "direct main"
description: description:
name: sized_context name: sized_context
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0+1" version: "1.0.0+1"
sky_engine: sky_engine:
@ -636,189 +643,189 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_gen name: source_gen
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.3" version: "1.0.5"
source_span: source_span:
dependency: transitive dependency: transitive
description: description:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.8.1" version: "1.8.1"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
name: stack_trace name: stack_trace
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.10.0" version: "1.10.0"
stream_channel: stream_channel:
dependency: transitive dependency: transitive
description: description:
name: stream_channel name: stream_channel
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
stream_transform: stream_transform:
dependency: transitive dependency: transitive
description: description:
name: stream_transform name: stream_transform
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
string_scanner: string_scanner:
dependency: transitive dependency: transitive
description: description:
name: string_scanner name: string_scanner
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
string_validator: string_validator:
dependency: transitive dependency: transitive
description: description:
name: string_validator name: string_validator
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.3.0" version: "0.3.0"
styled_widget: styled_widget:
dependency: "direct main" dependency: "direct main"
description: description:
name: styled_widget name: styled_widget
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.3.1+2" version: "0.3.1+2"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
name: term_glyph name: term_glyph
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.4.1" version: "0.4.1"
textstyle_extensions: textstyle_extensions:
dependency: transitive dependency: transitive
description: description:
name: textstyle_extensions name: textstyle_extensions
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0-nullsafety" version: "2.0.0-nullsafety"
time: time:
dependency: "direct main" dependency: "direct main"
description: description:
name: time name: time
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
timing: timing:
dependency: transitive dependency: transitive
description: description:
name: timing name: timing
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
tuple: tuple:
dependency: transitive dependency: transitive
description: description:
name: tuple name: tuple
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
name: typed_data name: typed_data
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
universal_platform: universal_platform:
dependency: transitive dependency: transitive
description: description:
name: universal_platform name: universal_platform
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0+1" version: "1.0.0+1"
url_launcher: url_launcher:
dependency: transitive dependency: transitive
description: description:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "6.0.9" version: "6.0.9"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_linux name: url_launcher_linux
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
url_launcher_macos: url_launcher_macos:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_macos name: url_launcher_macos
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
url_launcher_platform_interface: url_launcher_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_platform_interface name: url_launcher_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.4" version: "2.0.4"
url_launcher_web: url_launcher_web:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
uuid: uuid:
dependency: transitive dependency: transitive
description: description:
name: uuid name: uuid
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.4" version: "3.0.4"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
watcher: watcher:
dependency: transitive dependency: transitive
description: description:
name: watcher name: watcher
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
web_socket_channel: web_socket_channel:
dependency: transitive dependency: transitive
description: description:
name: web_socket_channel name: web_socket_channel
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
win32: win32:
dependency: transitive dependency: transitive
description: description:
name: win32 name: win32
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.5" version: "2.2.5"
window_size: window_size:
@ -834,14 +841,14 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: xdg_directories name: xdg_directories
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.2.0" version: "0.2.0"
yaml: yaml:
dependency: transitive dependency: transitive
description: description:
name: yaml name: yaml
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.1.0" version: "3.1.0"
sdks: sdks: