В iPados 26 ShowModalBottomSheet / Showdialog не адаптируются, когда окно изменяется - требует руководства или адаптивноIOS

Программируем под IOS
Ответить
Anonymous
 В iPados 26 ShowModalBottomSheet / Showdialog не адаптируются, когда окно изменяется - требует руководства или адаптивно

Сообщение Anonymous »

Описание: Проблема < /strong> < /p>
На iPad после обновления iPados 26, окно приложения может изменить размер между компактным (телефон) и обычными (планшетными) классами размера во время выполнения. Один класс размера и окно изменяется, показанная поверхность не адаптируется. Например, нижний лист, открытый в компакте, остается листом после изменения размера до регулярного, вместо того, чтобы стать центральным диалогом. это автоматически.
фактическое поведение

Выбранная поверхность заблокирована до того, что было во время презентации (лист остается листом; диалог остается диалогом), даже после изменений класса. Слайд Over)
ios 16+ (iPados 16+) [Пользовательская среда: iPados 16+/iPados 17+ также затронута]. IPados26.
запустите приложение с компактной шириной (по телефону) и измените размер приложения.
Когда модальный открыт, измените размер окна на регулярную ширину (таблетку).
Заметьте, что поверхность остается нижним листом, а не центральным диалогом.
Обратите с собой корпус: начинайте регулярно, модал открыть, решайте размер в комплект; Диалог не превращается в лист.
минимальный воспроизводимый образец (один файл: lib/main.dart)

Код: Выделить всё

import 'package:flutter/material.dart';

void main() => runApp(const DemoApp());

class DemoApp extends StatelessWidget {
const DemoApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Adaptive Dialogs Demo',
theme: ThemeData(useMaterial3: true, colorSchemeSeed: Colors.indigo),
home: const HomePage(),
debugShowCheckedModeBanner: false,
);
}
}

class HomePage extends StatelessWidget {
const HomePage({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Adaptive Modal (Mobile → Sheet, Tablet → Dialog)')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ElevatedButton(
onPressed: () => _openAdaptiveModal(context),
child: const Text('Open Adaptive Modal'),
),
],
),
),
);
}

void _openAdaptiveModal(BuildContext context) {
final shortestSide = MediaQuery.of(context).size.shortestSide;
final isTablet = shortestSide >= 600; // iPad/tablet breakpoint

if (!isTablet) {
// Mobile → Bottom Sheet
showModalBottomSheet(
context: context,
useSafeArea: true,
isScrollControlled: false,
backgroundColor: Theme.of(context).colorScheme.surface,
showDragHandle: true,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
),
builder: (ctx) {
return Padding(
padding: const EdgeInsets.fromLTRB(16, 8, 16, 24),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Modal Bottom Sheet (Mobile)',
style: Theme.of(ctx).textTheme.titleLarge,
),
const SizedBox(height: 12),
const Text('Opened via showModalBottomSheet for mobile view.'),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
TextButton(
onPressed: () => Navigator.of(ctx).pop(),
child: const Text('CLOSE'),
),
],
),
],
),
);
},
);
} else {
// Tablet → Center Dialog
showDialog(
context: context,
barrierDismissible: true,
builder: (ctx) {
return AlertDialog(
title: const Text('Center Dialog (Tablet)'),
content: const Text('Opened via showDialog for tablet view.'),
actions: [
TextButton(
onPressed: () => Navigator.of(ctx).pop(),
child: const Text('CANCEL'),
),
FilledButton(
onPressed: () => Navigator.of(ctx).pop(),
child: const Text('OK'),
),
],
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
);
},
);
}
}
}

обходные пути пробовали
вручную прослушивание изменений размера, отклонение текущего модала и повторно открыть другую поверхность. Это работает, но является сложным и хрупким.
Также, когда он закрыт и вновь открыт, введенные данные будут потеряны. < /P>
Вопросы < /strong> < /p>
  • Есть ли рекомендуемый рамный рисунок, чтобы сделать модальный класс, адаптируемый, в то время как навсегда нет, чтобы адаптироваться на основе. API?


Подробнее здесь: https://stackoverflow.com/questions/797 ... indow-is-r
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»