小编iBo*_*101的帖子

如何在Flutter的文本输入字段中配置自动大写行为?

我正在Windows上尝试Flutter开发。我有一个带有InputField的简单测试应用程序。我希望第一个键盘输入为大写字母,但目前看不到一种实现该功能的方法(例如,按下Shift键启动键盘)。有任何想法吗?

代码(稍微简化一下)是:

import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(
      theme: new ThemeData.dark(),
      home: new MainScreen()
  ));
}

class MainScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
            leading: new IconButton(
                icon: new Icon(Icons.menu),
                tooltip: 'Navigation menu',
                onPressed: null,
            ),
            title: new Text('Test'),
        ),
        body: new NewTest(),
    );
  }
}

/// Widget
class NewTest extends StatefulWidget {
  @override
  _NewTestInputState createState() => new _NewTestInputState();
}
/// State
class _NewTestInputState extends State<NewTest> {
  InputValue _currentInput;

  void _handleInputChange(InputValue …
Run Code Online (Sandbox Code Playgroud)

dart flutter

6
推荐指数
3
解决办法
3627
查看次数

颤振ButtonRow填充

我正在使用Dart在Flutter中开发一个应用程序,我发现布局非常简单.但是,我遇到了一个问题,我认为这与小部件之间的默认填充有关.

我在一个列中有两个飘动的ButtonRows,它们之间有很大的间隙,我想消除它们.我想这是由填充引起的,并尝试了各种方法,迄今为止没有成功.代码摘录如下:

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      ...
      body: new Column(
        ...
        children: <Widget>[
          ...
          new Container(
            margin: new EdgeInsets.all(0.0),
            child: new Padding(
              padding: new EdgeInsets.all(0.0),
              child: new ButtonBar(
                ...
                children: <Widget>[
                  new MaterialButton(
                    ...
                  ),
                  new MaterialButton(
                    ...
                  ),
                ),
              ),
            ),
          ),
          new Container(
            margin: new EdgeInsets.all(0.0),
            child: new Padding(
              padding: new EdgeInsets.all(0.0),
              child: new ButtonBar(
                ...
                children: <Widget>[
                  new MaterialButton(
                    ...
                  ),
                  new MaterialButton(
                    ...
                  ),
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

dart flutter

6
推荐指数
1
解决办法
8878
查看次数

等待 Dart 中的按键

我想暂停执行 Dart 脚本(在网页中),直到用户按下某个键。以下代码有效,但我想知道是否有更好的方法:

import 'dart:html';
import 'dart:async';

StreamSubscription sub;

Future main() async {
  KeyboardEvent k = await getkey();
  print(k.keyCode.toString());
}

Future<KeyboardEvent> getkey() async {
  Completer<KeyboardEvent> c = new Completer<KeyboardEvent>();
  sub = document.onKeyDown.listen((KeyboardEvent e){
    sub.cancel();
    c.complete(e);
  });
  return c.future;
}
Run Code Online (Sandbox Code Playgroud)

更新:下面的 Gunter 解决方案是理想的。上面的代码缩短为:

import 'dart:html';
import 'dart:async';

StreamSubscription sub;

Future main() async {
  KeyboardEvent k = await getkey();
  print(k.keyCode.toString());
}

Future<KeyboardEvent> getkey() async {
  return document.onKeyDown.first;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想过滤按键,我想我又回到了以前的风格:

import 'dart:html';
import 'dart:async';

StreamSubscription sub;

Future main() async {
  KeyboardEvent k …
Run Code Online (Sandbox Code Playgroud)

dart dart-html

5
推荐指数
1
解决办法
855
查看次数

Flutter Dismissible坚持必须从树中删除列表项

我正在使用“可放行的物品”列表,并希望在一个方向上滑动即可删除该物品,而在另一个方向上滑动即可启动该物品的编辑。但是,Flutter坚持必须在onDismissed回调中从树中删除Dismissible项。我试过重新插入该项目,但这不起作用。有任何想法吗?下面是创建列表项的代码摘录:

  return new Dismissible(
    key: new ObjectKey(item),
    direction: DismissDirection.horizontal,
    onDismissed: (DismissDirection direction) {
      setState(() {
        item.deleteTsk();
      });
      if (direction == DismissDirection.endToStart){
        //user swiped left to delete item
        _scaffoldKey.currentState.showSnackBar(new SnackBar(
          content: new Text('You deleted: ${item.title}'),
          action: new SnackBarAction(
            label: 'UNDO',
            onPressed: () { handleUndo(item); }
          )
        ));
      }
      if (direction == DismissDirection.startToEnd){
        //user swiped right to edit so undo the delete required by flutter
        Async.scheduleMicrotask((){handleUndo(item);});
        Navigator.of(context).pushNamed('/tskedit');
      }
    },
  ...
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
2
解决办法
2413
查看次数

颤振检测键盘隐藏动画的结尾

我在Flutter中有一个页面,其中包含几个小部件,包括一个TextField(我们称其为View1)。当用户单击TextField时,我将重建仅显示TextField和键盘的页面(我们将其称为View2)。当用户完成TextField的操作后,我将重新构建页面,再次像以前一样显示所有小部件(尽管将其称为View1,但仍将其称为View3)。除了一件事,这工作正常。我得到一个临时的黄色/黑色指示器(在调试模式下),该指示器指示没有足够的空间来显示View3中的所有小部件。该指示器仅持续了很短的时间,我最终发现它似乎是因为Flutter试图在键盘尚未完成动画移动时显示所有小部件。

要求在回调完成时请求View3的构建是很巧妙的,当键盘完成动画处理后,该回调将执行,但是我看不到这样做的任何方法。也许我缺少什么?

我可以考虑解决此问题的另一种方法是在构建View3之前插入一个延迟,以留出时间让键盘消失,但这似乎有点不客气。还有其他想法吗?

编辑

我添加了一个延迟,如下所示。似乎还是有点hacky。

Timer(Duration(milliseconds: 500),(){setState((){});});
Run Code Online (Sandbox Code Playgroud)

dart flutter

3
推荐指数
1
解决办法
1160
查看次数

AnimatedContainer可以为其高度设置动画吗?

我想动画列表中两个项目之间的间隙.我想过使用AminatedContainer,其高度最初为零,但我不熟悉如何使其工作.我的代码目前是:

    new AnimatedContainer(
      duration: const Duration(milliseconds: 200),
      height: App.itemSelected==id ? 50.0 : 0.0,
      curve: Curves.fastOutSlowIn,
    ),
Run Code Online (Sandbox Code Playgroud)

这确实改变了容器的高度,但没有像我希望的那样以动画方式改变.感谢任何帮助!

dart flutter

1
推荐指数
1
解决办法
3392
查看次数

标签 统计

dart ×6

flutter ×5

dart-html ×1