mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-03 19:54:12 +00:00 
			
		
		
		
	Improved post visibility picker dialog
This commit is contained in:
		@@ -9,7 +9,7 @@ import 'package:meta/meta.dart';
 | 
			
		||||
/// @author Pierre HUBERT
 | 
			
		||||
 | 
			
		||||
/// Show post visibility level picker and return selected visibility level
 | 
			
		||||
Future<PostVisibilityLevel> showPostVisibilityPicker({
 | 
			
		||||
Future<PostVisibilityLevel> showPostVisibilityPickerDialog({
 | 
			
		||||
  @required BuildContext context,
 | 
			
		||||
  @required PostVisibilityLevel initialLevel,
 | 
			
		||||
  @required bool isGroup,
 | 
			
		||||
@@ -20,11 +20,28 @@ Future<PostVisibilityLevel> showPostVisibilityPicker({
 | 
			
		||||
 | 
			
		||||
  final newLevel = await showDialog<PostVisibilityLevel>(
 | 
			
		||||
    context: context,
 | 
			
		||||
    builder: (c) => AlertDialog(
 | 
			
		||||
          title: Text(tr("Select new post visibility level")),
 | 
			
		||||
    builder: (c) => _PostVisibilityPickerWidget(
 | 
			
		||||
      isGroup: isGroup,
 | 
			
		||||
    ),
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
          // Show all options
 | 
			
		||||
          content: Column(
 | 
			
		||||
  return newLevel == null ? initialLevel : newLevel;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class _PostVisibilityPickerWidget extends StatelessWidget {
 | 
			
		||||
  final bool isGroup;
 | 
			
		||||
 | 
			
		||||
  const _PostVisibilityPickerWidget({Key key, @required this.isGroup})
 | 
			
		||||
      : super(key: key);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext c) => AlertDialog(
 | 
			
		||||
        title: Text(tr("Select new post visibility level")),
 | 
			
		||||
 | 
			
		||||
        // Show all options
 | 
			
		||||
        content: ConstrainedBox(
 | 
			
		||||
          constraints: BoxConstraints(maxHeight: 200),
 | 
			
		||||
          child: Column(
 | 
			
		||||
            children: <Widget>[
 | 
			
		||||
              // Public
 | 
			
		||||
              PostVisibilityLevelTile(
 | 
			
		||||
@@ -58,17 +75,15 @@ Future<PostVisibilityLevel> showPostVisibilityPicker({
 | 
			
		||||
              ),
 | 
			
		||||
            ],
 | 
			
		||||
          ),
 | 
			
		||||
 | 
			
		||||
          // Dialog actions
 | 
			
		||||
          actions: <Widget>[
 | 
			
		||||
            // Cancel
 | 
			
		||||
            TextButton(
 | 
			
		||||
              child: Text(tr("Cancel").toUpperCase()),
 | 
			
		||||
              onPressed: () => Navigator.pop(c, null),
 | 
			
		||||
            ),
 | 
			
		||||
          ],
 | 
			
		||||
        ),
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  return newLevel == null ? initialLevel : newLevel;
 | 
			
		||||
        // Dialog actions
 | 
			
		||||
        actions: <Widget>[
 | 
			
		||||
          // Cancel
 | 
			
		||||
          TextButton(
 | 
			
		||||
            child: Text(tr("Cancel").toUpperCase()),
 | 
			
		||||
            onPressed: () => Navigator.pop(c, null),
 | 
			
		||||
          ),
 | 
			
		||||
        ],
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@@ -10,6 +10,7 @@ import 'package:comunic/models/comment.dart';
 | 
			
		||||
import 'package:comunic/models/new_comment.dart';
 | 
			
		||||
import 'package:comunic/models/post.dart';
 | 
			
		||||
import 'package:comunic/models/user.dart';
 | 
			
		||||
import 'package:comunic/ui/dialogs/post_visibility_picker_dialog.dart';
 | 
			
		||||
import 'package:comunic/ui/tiles/comment_tile.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/account_image_widget.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/countdown_widget.dart';
 | 
			
		||||
@@ -22,7 +23,6 @@ import 'package:comunic/utils/date_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/files_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/intl_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/navigation_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/post_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/ui_utils.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter/rendering.dart';
 | 
			
		||||
@@ -573,7 +573,7 @@ class _PostTileState extends State<PostTile> {
 | 
			
		||||
 | 
			
		||||
  /// Update post visibility level
 | 
			
		||||
  Future<void> updatePostVisibilityLevel() async {
 | 
			
		||||
    final newLevel = await showPostVisibilityPicker(
 | 
			
		||||
    final newLevel = await showPostVisibilityPickerDialog(
 | 
			
		||||
      context: context,
 | 
			
		||||
      initialLevel: widget.post.visibilityLevel,
 | 
			
		||||
      isGroup: widget.post.isGroupPost,
 | 
			
		||||
 
 | 
			
		||||
@@ -6,10 +6,10 @@ import 'package:comunic/models/new_post.dart';
 | 
			
		||||
import 'package:comunic/ui/dialogs/input_url_dialog.dart';
 | 
			
		||||
import 'package:comunic/ui/dialogs/input_youtube_link_dialog.dart';
 | 
			
		||||
import 'package:comunic/ui/dialogs/new_survey_dialog.dart';
 | 
			
		||||
import 'package:comunic/ui/dialogs/post_visibility_picker_dialog.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/post_container_widget.dart';
 | 
			
		||||
import 'package:comunic/utils/files_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/intl_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/post_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/ui_utils.dart';
 | 
			
		||||
import 'package:file_picker/file_picker.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
@@ -219,7 +219,7 @@ class _PostCreateFormWidgetState extends State<PostCreateFormWidget> {
 | 
			
		||||
 | 
			
		||||
  /// Change post visibility level
 | 
			
		||||
  Future<void> _changeVisibilityLevel() async {
 | 
			
		||||
    final newLevel = await showPostVisibilityPicker(
 | 
			
		||||
    final newLevel = await showPostVisibilityPickerDialog(
 | 
			
		||||
      context: context,
 | 
			
		||||
      initialLevel: _postVisibilityLevel,
 | 
			
		||||
      isGroup: widget.postTarget == PostTarget.GROUP_PAGE,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user