#flutter #dismissible #rust-ink
Вопрос:
Я использую виджет чернил с украшением, чтобы разрешить брызги чернил над изображениями и цветным фоном.
После того, как я завернул его в Dismissible, я получил странный эффект: когда я провожу пальцем по виджету, его содержимое перемещается, как и ожидалось, но украшение застревает в исходном положении.
Вы можете увидеть это вживую в dartpad: https://dartpad.dev/5ef2d2eb3823821a74aa11c680d84d4b?null_safety=true
Вопрос: Это предполагаемое поведение в flutter или это ошибка?
Примечание: Проблема исчезает, если я заменяю чернила контейнером или удаляю их из SingleChildScrollView.
Код для воспроизведения:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
// remove SingleChildScrollView and all will be fine
body: SingleChildScrollView(
child: Dismissible(
key: Key('1'),
// change Ink to Container and all will be fine
child: Ink(
width: 100,
height: 100,
color: Colors.red,
child: Text('Swipe me, and watch my background get stuck!'),
),
),
),
),
);
}
}
Ответ №1:
Документация Ink
ис…
Рисует украшение (которое может быть простым цветом) на [материале].
Это происходит в вашем примере кода, потому что он окрашивает MaterialApp
. Чтобы устранить вашу проблему, оберните Ink
внутреннюю часть a Material
.
Образец…
Material(
child: Ink(
width: 100,
height: 100,
color: Colors.red,
child: Text('Swipe me, and watch my background get stuck!'),
),
),