TF-80 Move multiple email to mailbox from thread view

This commit is contained in:
dab246
2021-09-21 12:52:27 +07:00
committed by Dat H. Pham
parent 24e52dc6a4
commit a12efc8d2b
43 changed files with 1007 additions and 443 deletions
+2
View File
@@ -36,6 +36,8 @@ export 'presentation/views/context_menu/context_menu_builder.dart';
export 'presentation/views/context_menu/context_menu_header_builder.dart';
export 'presentation/views/context_menu/simple_context_menu_action_builder.dart';
export 'presentation/views/dialog/loading_dialog_builder.dart';
export 'presentation/views/dialog/downloading_file_dialog_builder.dart';
export 'presentation/views/background/background_widget_builder.dart';
// Resources
export 'presentation/resources/assets_paths.dart';
@@ -41,6 +41,7 @@ class ImagePaths {
String get icDownload => _getImagePath('ic_download.svg');
String get icMore => _getImagePath('ic_more.svg');
String get icPhotoLibrary => _getImagePath('ic_photo_library.svg');
String get icEmptyImageDefault => _getImagePath('empty_image_default.svg');
String _getImagePath(String imageName) {
return AssetsPaths.images + imageName;
@@ -0,0 +1,56 @@
import 'package:core/core.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_svg/flutter_svg.dart';
class BackgroundWidgetBuilder {
Key? _key;
SvgPicture? _image;
String? _text;
final BuildContext _context;
BackgroundWidgetBuilder(this._context);
void key(Key key) {
_key = key;
}
void image(SvgPicture image) {
_image = image;
}
void text(String text) {
_text = text;
}
Widget build() {
return Center(
key: _key ?? Key('BackgroundWidgetBuilder'),
child: CustomScrollView(
slivers: [
SliverFillRemaining(
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
_image ?? SizedBox.shrink(),
Padding(
padding: EdgeInsets.only(top: _image != null ? 16 : 0),
child: Text(
_text ?? '',
style: TextStyle(color: AppColor.baseTextColor, fontSize: 16),
textAlign: TextAlign.center,
),
),
],
),
height: MediaQuery.of(_context).size.height,
),
)
]
)
);
}
}
+18 -59
View File
@@ -50,84 +50,43 @@ class _TreeViewData extends StatelessWidget {
}
}
class TreeViewChild extends StatefulWidget {
final bool? startExpanded;
class TreeViewChild {
final BuildContext context;
final bool? isExpanded;
final Widget parent;
final List<Widget> children;
final VoidCallback? onTap;
TreeViewChild({
required this.parent,
required this.children,
this.startExpanded,
this.onTap,
Key? key,
}) : super(key: key);
TreeViewChild(
this.context,
{
required this.parent,
required this.children,
this.isExpanded,
this.onTap,
Key? key,
}
);
@override
TreeViewChildState createState() => TreeViewChildState();
TreeViewChild copyWith(
TreeViewChild source, {
bool? startExpanded,
Widget? parent,
List<Widget>? children,
VoidCallback? onTap,
}) {
return TreeViewChild(
parent: parent ?? source.parent,
children: children ?? source.children,
startExpanded: startExpanded ?? source.startExpanded,
onTap: onTap ?? source.onTap,
);
}
}
class TreeViewChildState extends State<TreeViewChild> {
bool? isExpanded;
@override
void initState() {
super.initState();
isExpanded = widget.startExpanded;
}
@override
void didChangeDependencies() {
isExpanded = widget.startExpanded ?? TreeView.of(context).startExpanded;
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
Widget build() {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
GestureDetector(
child: widget.parent,
child: parent,
onTap: () {
if (widget.onTap != null) {
widget.onTap!();
if (onTap != null) {
onTap!();
}
toggleExpanded();
},
),
AnimatedContainer(
duration: Duration(milliseconds: 400),
child: isExpanded!
? Column(
mainAxisSize: MainAxisSize.min,
children: widget.children,
)
? Column(mainAxisSize: MainAxisSize.min, children: children)
: Offstage(),
),
],
);
}
void toggleExpanded() {
setState(() {
this.isExpanded = !this.isExpanded!;
});
}
}