TF-80 Move multiple email to mailbox from thread view
This commit is contained in:
@@ -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,
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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!;
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user