【问题标题】:Flutter: Tab key not working properly in flutter desktop when screen not maximisedFlutter:当屏幕未最大化时,Tab 键在 Flutter 桌面中无法正常工作
【发布时间】:2021-09-15 15:30:29
【问题描述】:

我正在为 Flutter 桌面开发,并且遇到问题,因为当应用程序屏幕未最大化时,按 Tab 键不会在文本字段中循环。

我在一个 Gridview 中排列了 8 个文本字段,当应用程序屏幕最大化时,tab 键按预期在字段中移动,从左到右然后向下。当我减小屏幕尺寸时,制表键仅在连续循环中循环 2 个字段。我怎样才能让它正常工作? 代码如图:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(

      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

    @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text("Test App"),
      ),
      body: Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child:Container(
      height: 180,
      // width: MediaQuery.of(context).size.width * 0.9,
      child: GridView.count(
      scrollDirection: Axis.vertical,
      crossAxisCount: 4,
      childAspectRatio: 5,
      children:  [
      buildColumn(context,txt: "A"),
        buildColumn(context,txt: "B"),
        buildColumn(context,txt: "C"),
        buildColumn(context,txt: "D"),
        buildColumn(context,txt: "E"),
        buildColumn(context,txt: "F"),
        buildColumn(context,txt: "G"),
        buildColumn(context,txt: "H"),
      ])
    )
      )
    );
  }

    Column buildColumn(BuildContext context,{txt}) {
      return Column(children: [
    Text(txt),
    Container(
    height: MediaQuery.of(context).size.height * 0.04,
    width: 300,
    child:TextFormField(decoration: InputDecoration(
      enabledBorder: OutlineInputBorder(
        borderSide: BorderSide(
            color: Colors.black12, width: 1.0),
      ),),)
    ),
        ]
  );
    }
}

【问题讨论】:

    标签: flutter dart flutter-desktop


    【解决方案1】:

    看起来像一个错误,但可以通过添加focusedBorder 来修复(或者删除enabledBorder):

            child: TextFormField(
              decoration: InputDecoration(
                enabledBorder: OutlineInputBorder(
                    borderSide: BorderSide(color: Colors.black12, width: 1.0)),
                focusedBorder: OutlineInputBorder(
                    borderSide: BorderSide(color: Colors.green, width: 1.0)),
              ),
            ),
    

    【讨论】:

    • 谢谢,是的,我相信它是一个错误。我尝试了您的答案,只有完全删除 enabledBorder 和focusedBorder 才能正常工作。两者都有,或者只是焦点边框,当它只是文本字段时,它似乎可以工作,但是当我将其中一个文本字段更改为下拉按钮时,选项卡顺序再次混乱
    猜你喜欢
    • 2021-12-26
    • 2023-01-04
    • 2021-08-22
    • 2021-05-17
    • 2021-09-04
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多