如何在 TextField 中输入文本后显示快餐栏?
How to display a snackbar after entering text in a TextField?
我有一个文本字段。在 300ms.Snackbar 应该出现在屏幕中间之后,我需要在用户完成输入单词后出现一个小吃店。如何在用户停止在文本字段中输入后 300 毫秒显示 snackbar?
我的代码:
final textController = TextEditingController();
....
child: TextField(
controller: textController,
onChanged: (value) {},
)
请检查以下代码,看看是否有帮助。
import 'dart:async';
import 'package:flutter/material.dart';
void main() => runApp(const SnackBarDemo());
class SnackBarDemo extends StatelessWidget {
const SnackBarDemo({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SnackBar Demo',
home: Scaffold(
appBar: AppBar(
title: const Text('SnackBar Demo'),
),
body: const SnackBarPage(),
),
);
}
}
class SnackBarPage extends StatelessWidget {
const SnackBarPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Center(
child: Center(
child: TextField(
onEditingComplete: () {
final snackBar = SnackBar(
content: const Text('Yay! A SnackBar!'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
// Some code to undo the change.
},
),
);
Timer(Duration(milliseconds: 300), () {
ScaffoldMessenger.of(context).showSnackBar(snackBar);
});
},
),
),
);
}
}
与其他答案类似,但会在用户停止输入后出现,而不是在用户提交 TextField
:
时出现
Timer? t;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: TextField(
onChanged: (v) {
t?.cancel();
t = Timer(const Duration(milliseconds: 300), () {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('im a snackbar'),
),
);
});
},
),
),
);
}
我有一个文本字段。在 300ms.Snackbar 应该出现在屏幕中间之后,我需要在用户完成输入单词后出现一个小吃店。如何在用户停止在文本字段中输入后 300 毫秒显示 snackbar? 我的代码:
final textController = TextEditingController();
....
child: TextField(
controller: textController,
onChanged: (value) {},
)
请检查以下代码,看看是否有帮助。
import 'dart:async';
import 'package:flutter/material.dart';
void main() => runApp(const SnackBarDemo());
class SnackBarDemo extends StatelessWidget {
const SnackBarDemo({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SnackBar Demo',
home: Scaffold(
appBar: AppBar(
title: const Text('SnackBar Demo'),
),
body: const SnackBarPage(),
),
);
}
}
class SnackBarPage extends StatelessWidget {
const SnackBarPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Center(
child: Center(
child: TextField(
onEditingComplete: () {
final snackBar = SnackBar(
content: const Text('Yay! A SnackBar!'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
// Some code to undo the change.
},
),
);
Timer(Duration(milliseconds: 300), () {
ScaffoldMessenger.of(context).showSnackBar(snackBar);
});
},
),
),
);
}
}
与其他答案类似,但会在用户停止输入后出现,而不是在用户提交 TextField
:
Timer? t;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: TextField(
onChanged: (v) {
t?.cancel();
t = Timer(const Duration(milliseconds: 300), () {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('im a snackbar'),
),
);
});
},
),
),
);
}