Flutter:当我在键盘上向上箭头时,ScrollView 的焦点发生变化

Flutter: The focus of ScrollView change when I arrow up on keyboard

我想创建一个可以通过键盘滚动的 DataTable,因此,我使用了 ImprovedScrolling 包来实现这种可访问性。 但是当我点击键盘上的向上箭头时,焦点会更改为上面的 TextField。我也试图删除那个 TextFiled 但焦点仍然更改为我应用程序中的另一个小部件。有没有什么小部件可以让焦点完全不变?

这是我的代码:

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

class EmployeePage extends StatelessWidget {
  EmployeePage({Key? key}) : super(key: key);
  final controller = ScrollController();
  @override
  Widget build(BuildContext context) {
    final height = MediaQuery.of(context).size.height;
    final width = MediaQuery.of(context).size.width;
    return Padding(
      padding: const EdgeInsets.all(30),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisSize: MainAxisSize.max,
        children: [
          Row(
            children: [
              Padding(
                padding: const EdgeInsets.only(top: 10.0),
                child: Text(
                  "Employee Dashboard",
                  style: Theme.of(context).textTheme.headline1,
                ),
              ),
            ],
          ),
          const SizedBox(height: 15),
          Expanded(
            child: Container(
              width: width / 2,
              decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(5),
                color: Colors.white,
              ),
              child: Padding(
                padding: const EdgeInsets.all(16.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text(
                          "Employees",
                          style: Theme.of(context).textTheme.headline2,
                        ),
                        Padding(
                          padding: const EdgeInsets.only(right: 32.0),
                          child: SizedBox(
                            width: 250,
                            height: 35,
                            child: Material(
                              color: Colors.white,
                              elevation: 2,
                              child: TextField(
                                autofocus: false,
                                keyboardType: TextInputType.name,
                                maxLines: 1,
                                onChanged: (text) {},
                                decoration: const InputDecoration(
                                  border: InputBorder.none,
                                  focusedBorder: InputBorder.none,
                                  hintStyle: TextStyle(
                                    fontSize: 8,
                                    color: Colors.black12,
                                  ),
                                  hintText: "name",
                                  prefixIcon: Icon(
                                    Icons.search,
                                    color: Colors.black45,
                                  ),
                                ),
                              ),
                            ),
                          ),
                        ),
                      ],
                    ),
                    const SizedBox(height: 10),
                    Expanded(
                      child: ClipRect(
                        child: ImprovedScrolling(
                          scrollController: controller,
                          enableKeyboardScrolling: true,
                          enableMMBScrolling: true,
                          enableCustomMouseWheelScrolling: true,
                          child: SingleChildScrollView(
                            controller: controller,
                            child: DataTable(
                              columnSpacing: 100,
                              columns: [
                                DataColumn(label: Text("name")),
                                DataColumn(label: Text("gender")),
                                DataColumn(label: Text("mobile")),
                                DataColumn(label: Text("age")),
                                DataColumn(label: Text("mobile")),
                                DataColumn(label: Text("username")),
                                DataColumn(label: Text("salary")),
                                DataColumn(label: Text("point")),
                              ],
                              rows: someData,
                            ),
                          ),
                        ),
                      ),
                    )
                  ],
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }

  List<DataRow> someData = [
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
    DataRow(cells: [
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
      DataCell(
        Text("data"),
      ),
    ]),
  ];
}

将我的 DataTable 小部件包装在 Focus 小部件中:

Focus(
   onKey: (focusNode, keyboard) {
      focusNode.requestFocus();
      return KeyEventResult.handled;
   },
   child: ...,
)