小编Har*_*dia的帖子

如何在焦点中将焦点转移到下一个文本域?

我是Flutter的新手.

我正在使用以下小部件构建具有多个文本输入的表单:Form,TextFormField.出现的键盘不会显示"next"(应该将焦点移到下一个字段)字段操作,而是"完成"操作(隐藏keyborad).

我寻找官方文档中的任何提示,没有直接发现可以做到的事情.我虽然登陆了FocusNode(cookbook,api doc).它提供了通过某个按钮或应用程序上的任何其他操作来移动焦点的机制,但我希望它在键盘中.

dart flutter flutter-layout

10
推荐指数
7
解决办法
8252
查看次数

在 Flutter 中实现 MQTT

我是 Flutter 的新手(来自 Android 背景),想在 Flutter 中实现 MQTT 客户端。

这就是我要的:

  1. 当应用程序打开/未被操作系统杀死时,MQTT 客户端应该是“活动的”。

  2. 我不想在后台运行它(没有打开应用程序,我知道在 iOS 中这样做有问题,请在某处阅读)但是当应用程序打开时。

  3. 根据订阅主题中的消息更新 UI/状态。

我查看了 pub 并找到了 2 个包,mqttmqtt_client,它们看起来像 dart 中 MQTT 的非 Flutter 实现。

我有一个想法如何使用这个库中的一个来使它与颤振一起工作,但不确定它是否有效:

  1. 创建并实现 MQTTObserver 状态小部件,它将异步连接到代理并侦听特定主题的消息并相应地更新状态。

  2. 将这个小部件包裹在 MaterialApp 周围

  3. 树下的任何小部件都可以访问 MQTTObserver 小部件的状态,以将其反映在其 UI 中。

你认为这是个好主意吗?它会起作用吗?你有更好的主意吗?或者我应该为 MQTT 实现特定于平台的实现(应该是我的最后选择)。

mqtt dart flutter flutter-dependencies

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

在 Dart 2 中将枚举类型作为参数传递

就像将类类型作为参数传递给方法一样,我想传递枚举,因为我想编写一个对枚举进行操作的通用方法。

我试过:

  void foo(E):
    print(E.values[0])
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

有办法吗?

enums dart

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

在卡片中任意定位小部件(基于相对于父级的 xy 坐标)

我想要在卡片上放置一个点,可以在卡片内任意移动。

这是我到目前为止的解决方案。

class RoomCard extends StatefulWidget {
  final Room room;

  RoomCard({
    @required this.room,
  }) : assert(room != null);

  @override
  _RoomCardState createState() => _RoomCardState();
}

class _RoomCardState extends State<RoomCard> {
  double x = 0.0;
  double y = 0.0;
  @override
  Widget build(BuildContext context) {
    return SizedBox(
      height: 400.0,
      width: 400.0,
      child: GestureDetector(
        onPanUpdate: (p) {
          setState(() {
            x += p.delta.dx;
            y += p.delta.dy;
          });
        },
        child: Card(
          child: Stack(
            children: <Widget>[
              Marker(
                x: x,
                y: y,
              ),
            ],
          ),
        ),
      ),
    ); …
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

如果处理后台消息,firebase_messaging flutter 插件会在启动时崩溃

我将firebase_messaging v5.1.6与我的 flutter 应用程序集成,如自述文件中提到的“处理后台消息”选项。

\n\n

这是我的文件的外观。

\n\n

我的应用程序.kt

\n\n
class MyApplication : FlutterApplication(), PluginRegistrantCallback {\n    override fun onCreate() {\n        super.onCreate()\n        FlutterFirebaseMessagingService.setPluginRegistrant(this)\n    }\n\n    override fun registerWith(registry: PluginRegistry) {\n        GeneratedPluginRegistrant.registerWith(registry)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

firebase_util.dart

\n\n
class MyApplication : FlutterApplication(), PluginRegistrantCallback {\n    override fun onCreate() {\n        super.onCreate()\n        FlutterFirebaseMessagingService.setPluginRegistrant(this)\n    }\n\n    override fun registerWith(registry: PluginRegistry) {\n        GeneratedPluginRegistrant.registerWith(registry)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我调用FirebaseUtil().messagingInit()initState应用程序小部件。

\n\n

这是应用程序启动时收到的错误日志。

\n\n
E/MethodChannel#plugins.flutter.io/firebase_messaging( 6252): Failed to handle method call\nE/MethodChannel#plugins.flutter.io/firebase_messaging( 6252): java.lang.NullPointerException: Attempt to invoke virtual method \'android.content.Context android.app.Activity.getApplicationContext()\' on …
Run Code Online (Sandbox Code Playgroud)

firebase flutter firebase-cloud-messaging flutter-dependencies

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

如何通过知道颤振中的值来删除密钥?

我有一张对象地图:

Map<String, Transaction> _userIncome = {
    'four': Transaction(amount: 450, date: DateTime.now(), title: 'Einkommen', accountType: 'timr', notes: 'joa' , icon: Icon(Icons.today,), id: 'kololdcd', repeat: 'always'),
    'five': Transaction(amount: 60, date: DateTime.now(), title: 'Bruder', accountType: 'timr', notes: 'brother' , icon: Icon(Icons.today,), id: 'kolkfrcd', repeat: 'never'),
    'six': Transaction(amount: 60, date: DateTime.now(), title: 'Rückerstattung', accountType: 'timr', notes: 'brother' , icon: Icon(Icons.today,), id: 'kolofkfrcd', repeat: 'never'),
};
Run Code Online (Sandbox Code Playgroud)

如果我知道值(值是唯一的),我想获取密钥,以便我可以通过其键删除条目:

_userIncome.remove(key);
Run Code Online (Sandbox Code Playgroud)

我可以用给定的值识别条目:

_userIncome.values
    .where((t) => t.date.difference(datte).inDays == 0 && t.id == transactionId);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获得匹配的密钥,以便我可以删除该条目。或者有没有办法通过其值删除条目?

我很想听听一些建议:)

javascript dart flutter

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

列内的ListView导致“垂直视口被赋予无限制的高度”

我是新手,对布局有麻烦。

我想要这样的东西: 下方的粘性标题和滚动视图

粘性标头和其下方的滚动视图。我想到了使用带有两个子项的Column小部件-第一个是标题,第二个是ListView。

这是我的代码

 Widget build(BuildContext context) {
 return Material(
   elevation: 8.0,
   child: Column(
     crossAxisAlignment: CrossAxisAlignment.start,
     children: <Widget>[
       Padding(
         padding: const EdgeInsets.all(16.0),
         child: Text(
           title,
           style:
               Theme.of(context).textTheme.subhead.copyWith(fontSize: 18.0),
           textAlign: TextAlign.left,
         ),
       ),
       Divider(height: 4.0),
       ListView.builder(itemBuilder: (context, i) {
         return ListTile(
           title: Text("Title $i"),
           subtitle: Text("Subtitle $i"),
         );
       }),
     ],
   ),
 );
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

I/flutter ( 5725): ??? EXCEPTION CAUGHT BY RENDERING LIBRARY ??????????????????????????????????????????????????????????
I/flutter ( 5725): The following assertion was thrown during performResize():
I/flutter ( 5725): Vertical viewport was given …
Run Code Online (Sandbox Code Playgroud)

android listview flutter flutter-sliver flutter-layout

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

如何禁用复选框抖动

我在ListTile中使用Checkbox,如下所示:

 ListTile(
  leading: Checkbox(
  value: _isChecked,
    onChanged: (v) {
      setState(() {
          _isChecked = !_isChecked;
      });
    },
  ),
  title: Text("is Bathroom"),
);
Run Code Online (Sandbox Code Playgroud)

如何禁用该复选框。我知道Checkbox小部件是无状态的。但是材料子包中是否提供了其他任何可以执行此操作的Widget。类似于InputDecorator。

我对DropdownButton也有同样的问题。我使用它如下以从下拉列表中选择表单中的项目。

             InputDecorator(
                decoration: InputDecoration(
                  labelText: "Type",
                  hintText: "Choose the type",
                ),
                isEmpty: _type == null,
                child: DropdownButton<int>(
                  value: _type,
                  isDense: true,
                  onChanged: (value) {
                    setState(() {
                      _type = value;
                    });
                  },
                  items: _buildDropdownItemList(),
                ),
              );
Run Code Online (Sandbox Code Playgroud)

我在InputDecoration中尝试了enable参数,但这只是改变了装饰。用户仍然可以更改选择。

dart flutter flutter-layout

3
推荐指数
2
解决办法
1716
查看次数

在颤振自定义滚动视图中构建两个不同的列表

如何构建两个要垂直显示的列表,以便构建一个项目列表,然后按照该垂直顺序创建第二个列表。

flutter flutter-sliver flutter-layout

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

DropdownButtonFormField,具有固定宽度但动态文本项

我认为我不太了解 Flutter 中的约束,所以请耐心等待!

我想DropdownButtonFormField从数据库填充它的项目。字符串可以是任何动态长度。所以我决定的是有一个固定的宽度,DropdownButtonFormField并且DropdownMenuItem会被省略Text

这是我尝试过的。

SizedBox(
  width: 136.0,
  child: DropdownButtonFormField<int>(
    hint: Text("hintText")
    decoration: InputDecoration(
        contentPadding: const EdgeInsets.all(0.0),
        enabledBorder: UnderlineInputBorder(
          borderSide: BorderSide(color: Colors.white),
        ),
        isDense: true),
    items: [
        DropdownMenuItem<int>(
            value: 0,
            child: TextOneLine(
              "less character",
            ),
        ),
        DropdownMenuItem<int>(
            value: 0,
            child: TextOneLine(
              "mooooorrrrreeee character",
            ),
        )
    ]
  ),
);

class TextOneLine extends StatelessWidget {
  final String data;
  final TextStyle style;
  final TextAlign textAlign;
  final bool autoSize;

  TextOneLine(
    String data, {
    Key key,
    this.style, …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout

3
推荐指数
2
解决办法
5134
查看次数

在Flutter中的SliverAppBar和SliverList之间添加空间

我有一个SliverAppBar,在它下面是一个SliverList。

第一个SliverList项太靠近SliverAppBar。我想在两者之间添加一些间距,无论是通过SliverAppBar下方还是SliverList上方的底部边距。

如何才能做到这一点?

flutter flutter-sliver

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

如何在Flutter中固定公钥?

我想固定服务器的公共密钥,以便对服务器的任何请求都必须具有该公共密钥(这是为了防止像Charles这样的代理嗅探数据)。

我在Volley上用Android做过类似的事情。

如何使用Flutter做同样的事情?

pinning dart flutter

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

从DropdownButtonFormField删除下划线

我如何从DropdownButtonFormField删除下划线(请参见下面的照片),我尝试使用InputDecortaion进行各种选项组合,但找不到任何方法。

DropdownButtonFormField

SizedBox(
  width: 100.0,
  child: DropdownButtonFormField<int>(
    decoration: InputDecoration(
        border: UnderlineInputBorder(
            borderSide:
                BorderSide(color: Colors.white))),
    value: 2,
    items: <DropdownMenuItem<int>>[
      DropdownMenuItem<int>(
        value: 1,
        child: Text("Owner"),
      ),
      DropdownMenuItem<int>(
        value: 2,
        child: Text("Member"),
      ),
    ],
  ),
Run Code Online (Sandbox Code Playgroud)

dart flutter

0
推荐指数
9
解决办法
4580
查看次数