You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.2 KiB
64 lines
2.2 KiB
import 'package:dde_gesture_manager/extensions.dart';
|
|
import 'package:dde_gesture_manager/models/content_layout.provider.dart';
|
|
import 'package:dde_gesture_manager/models/scheme.provider.dart';
|
|
import 'package:dde_gesture_manager/pages/gesture_editor.dart';
|
|
import 'package:dde_gesture_manager/pages/local_manager.dart';
|
|
import 'package:dde_gesture_manager/pages/market_or_me.dart';
|
|
import 'package:dde_gesture_manager/utils/helper.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class Content extends StatefulWidget {
|
|
const Content({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
_ContentState createState() => _ContentState();
|
|
}
|
|
|
|
class CopiedGesturePropProvider extends GesturePropProvider {
|
|
CopiedGesturePropProvider.empty() : super.empty();
|
|
}
|
|
|
|
class _ContentState extends State<Content> {
|
|
double? preWindowWidth;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
var windowWidth = MediaQuery.of(context).size.width;
|
|
var preferredPanelsStatus = H.getPreferredPanelsStatus(windowWidth);
|
|
var widthChanged = preWindowWidth != null && preWindowWidth != windowWidth;
|
|
var widget = MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider(
|
|
create: (context) => ContentLayoutProvider()
|
|
..localManagerOpened = preferredPanelsStatus.localManagerPanelOpened
|
|
..marketOrMeOpened = preferredPanelsStatus.marketOrMePanelOpened,
|
|
),
|
|
ChangeNotifierProvider(
|
|
create: (context) => CopiedGesturePropProvider.empty(),
|
|
),
|
|
],
|
|
builder: (context, child) {
|
|
if (widthChanged && mounted) {
|
|
Future.microtask(
|
|
() => context.read<ContentLayoutProvider>().setProps(
|
|
localManagerOpened: preferredPanelsStatus.localManagerPanelOpened,
|
|
marketOrMeOpened: preferredPanelsStatus.marketOrMePanelOpened,
|
|
),
|
|
);
|
|
}
|
|
return Row(
|
|
mainAxisSize: MainAxisSize.max,
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
LocalManager(),
|
|
GestureEditor(),
|
|
MarketOrMe(),
|
|
],
|
|
);
|
|
},
|
|
);
|
|
preWindowWidth = windowWidth;
|
|
return widget;
|
|
}
|
|
}
|