Если элемент внутри view - игнорируется gesturedetector и onTap

У меня есть SingleChildScrollView и в нём элемент TextFormField. Не получается отловить нажатие на TextFormField. Если ставлю туда кнопку, то всё норм.

код:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

main() {
  runApp(OnePersonScreen());
}

class OnePersonScreen extends StatefulWidget {
  final Map<dynamic, dynamic> personInfo = {
    "aaa": "123123123",
    "vvvvsads": "sdaadsasdasd",
    "asdasda": "sdaadsasdasd",
    "zxxzc": "sdaadsasdasd",
    "cvcvcv": "sdaadsasdasd",
    "zxzx": "sdaadsasdasd",
    "bvvbc": "sdaadsasdasd",
    "zxzc": "sdaadsasdasd",
    "bvc": "sdaadsasdasd"
  };

  @override
  OnePersonScreen({
    Key key,
  }) : super(key: key);

  @override
  OnePersonScreenState createState() {
    return new OnePersonScreenState();
  }
}

class OnePersonScreenState extends State<OnePersonScreen> {
  final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

  _getListRowsFromData(data) {
    List<Widget> myRows = [];
    data.forEach((k, v) {
      myRows.addAll([
        Row(mainAxisSize: MainAxisSize.min, children: [
          Expanded(
              flex: 5,
              child: GestureDetector(
                onTap: () {
                  print("тап не считывается $v");
                },
                child: TextFormField(
                  textAlignVertical: TextAlignVertical.center,
                  textAlign: TextAlign.start,
                  maxLines: 2,
                  initialValue: "$v",
                  onTap: () {
                    print("тап не считывается $v");
                  },
                  decoration: InputDecoration(
                      labelText: "$k:",
                      enabled: false,
                      border: InputBorder.none),
                ),
              )),
          Expanded(
              flex: 1,
              child: IconButton(
                  icon: Icon(
                    Icons.content_copy,
                    color: Colors.grey,
                  ),
                  onPressed: () {
                    print("жали $v");
                    Clipboard.setData(new ClipboardData(text: "$v"));
                    _scaffoldKey.currentState
                        .showSnackBar(SnackBar(content: Text('copied: $v')));
                  }))
        ]),
        Divider(),
      ]);
    });
    return myRows;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        debugShowCheckedModeBanner: false,
        title: "${widget.personInfo['aaa']}",
        theme: ThemeData.dark(
            // primarySwatch: Colors.green,
            ),
        home: Scaffold(
            key: _scaffoldKey,
            appBar: AppBar(
              leading: BackButton(
                onPressed: () {
                  Navigator.pop(context);
                },
              ),
              title: Text(
                "${widget.personInfo['aaa']}",
              ),
            ),
            body: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.start,
                mainAxisSize: MainAxisSize.max,
                children: <Widget>[
                  Expanded(
                      flex: 1,
                      child: Container(
                          padding: EdgeInsets.all(5),
                          width: double.infinity,
                          child: SingleChildScrollView(
                              controller: ScrollController(),
                              // primary: false,
                              child: Column(
                                  mainAxisSize: MainAxisSize.max,
                                  children: [                                    ..._getListRowsFromData(widget.personInfo),
                                  ]))))
                ])));
  }
}

Ответы (1 шт):

Автор решения: Alex

Проблема в версии Flutter. Следует вернуться на стабильный канал инструкция.

flutter channel stable flutter upgrade

И потом один элемент будет выглядеть вот так:

 Expanded(
              flex: 5,
              child:  TextFormField(
                  readOnly: true,
                  textAlignVertical: TextAlignVertical.center,
                  textAlign: TextAlign.start,
                  maxLines: 2,
                  initialValue: "$v",
                  onTap: () {
                    print("тап не считывается $v");
                  },
                  decoration: InputDecoration(
                      labelText: "$k:",
                      border: InputBorder.none),
                ),
              )
→ Ссылка