์žฌ๋ฐŒ๋Š”๊ฑฐ๐ŸŒˆ

Flutter_20. TextField with Button, keyboardType, FocusScope, SnackBar ๋ณธ๋ฌธ

๊ฐœ๋ฐœํ•˜๊ธฐ/Flutter Start

Flutter_20. TextField with Button, keyboardType, FocusScope, SnackBar

uraon 2023. 5. 12. 07:00
728x90
๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Button๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” TextField๋ฅผ ๋ฉ”๋ชจํ•ด๋ณด๋ ค ํ•œ๋‹ค.

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, ์ž…๋ ฅํ•œ ๊ฐ’์€ SnackBar๋กœ ์ถœ๋ ฅํ•ด๋ณด๊ฒ ๋‹ค.

 

2023.05.02 - [๊ฐœ๋ฐœํ•˜๊ธฐ] - Flutter_07. ScaffoldMessenger, SnackBar, Function

 

Flutter_07. ScaffoldMessenger, SnackBar, Function

ํ™”๋ฉด ํ•˜๋‹จ์— ์•ฑ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” SnackBar๋ฅผ ๋ฉ”๋ชจํ•ด๋ณด๊ฒ ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์—์„œ ํ™•์ธ! https://docs.flutter.dev/cookbook/design/snackbars Display a snackbar How to implement a snackba

uraon.tistory.com

 

 

 

 

 

 

TextField, Button, SnackBar

 

 

1) ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”

class _HomeState extends State<Home> {
  // Field
  late TextEditingController textEditingController;
  late String inputValue;

  // Init
  @override
  void initState() {
    super.initState();
    textEditingController = TextEditingController();
    inputValue = '';
  }

  // Dispose
  @override
  void dispose() {
    textEditingController.dispose();
    super.dispose();
  }

 

 

 

2) TextField

โŠ TextField
- controller : TextEditingController
- decoration : InputDecoration(border, labelText)
- keyboardType : TextInputType
//- obscureText : ๋ฌธ์ž ์ˆจ๊น€ ์ฒ˜๋ฆฌ(ex ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ)
//- onSubmitted : (String value) async{ await... }

 

 

 

3) Button : TextEditingController.text.trim()

Case1. ํ…์ŠคํŠธํ•„๋“œ๊ฐ€ ๊ณต๋ฐฑ์ธ ๊ฒฝ์šฐ
Case2. ํ…์ŠคํŠธํ•„๋“œ์— ์ž…๋ ฅ๋œ ๊ฐ’์ด ์žˆ์ง€๋งŒ, ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ(ex. ์ŠคํŽ˜์ด์Šค๋ฐ” : "    abc")
Case3. ํ…์ŠคํŠธํ•„๋“œ์— ์ž…๋ ฅ๋œ ๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ์žˆ๋Š” ๊ฒฝ์šฐ

---------
- Case1 ๋˜๋Š” Case2์˜ ๊ฒฝ์šฐ, errorSnackBar(context) ํ•จ์ˆ˜ ํ˜ธ์ถœ
- Case3์˜ ๊ฒฝ์šฐ, showSnackBar(context) ํ•จ์ˆ˜ ํ˜ธ์ถœ

 

#์ฐธ๊ณ  : https://api.flutter.dev/flutter/dart-core/String/trim.html

 

trim method - String class - dart:core library - Dart API

trim abstract method String trim() The string without any leading and trailing whitespace. If the string contains leading or trailing whitespace, a new string with no leading and no trailing whitespace is returned: final trimmed = '\tDart is fun\n'.trim();

api.flutter.dev

 

 

 

 

4) SnackBar Function ์ •์˜

โŠ ScaffoldMessenger.of(context).showSnackBar
SnackBar
- content: ๋ฌธ๊ตฌ,
- duration: ์ถœ๋ ฅ ์ง€์† ์‹œ๊ฐ„
- backgroundColor: ์Šค๋‚ต๋งˆ ์นผ๋ผ,
// --- Func SnackBar
  showSnackBar(BuildContext context){
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        content: Text('์ž…๋ ฅํ•œ ๊ธ€์ž๋Š” $inputValue ์ž…๋‹ˆ๋‹ค.'),
        duration: const Duration(seconds: 2),
        backgroundColor: Colors.blue,
        )
    );//ํ•จ์ˆ˜๋‹ˆ๊นŒ ";" ์ถ”๊ฐ€!
  }

  errorSnackBar(BuildContext context){
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(
        content: Text('๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.'),
        duration: Duration(seconds: 2),
        backgroundColor: Colors.red,
        )
    );//ํ•จ์ˆ˜๋‹ˆ๊นŒ ";" ์ถ”๊ฐ€!
  }

 

 

 

5) ์ €์žฅํ•˜๊ณ  ๊ธฐ๋Šฅ ํ™•์ธ

 

 

 

 

 

 

 

keyboard, FocusScope

 

 

 

ํ‚ค๋ณด๋“œ ์ถœ๋ ฅ ํ›„(ํ‚ค๋ณด๋“œ ์ถœ๋ ฅ : Command + K), ํ‚ค๋ณด๋“œ ์™ธ์˜ ๋‹ค๋ฅธ ์˜์—ญ์„ ํด๋ฆญํ•ด๋„ ํ‚ค๋ณด๋“œ๋Š” ๋‚ด๋ ค๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

์ด๋Ÿด๋•Œ FocusScope๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ‚ค๋ณด๋“œ ์™ธ ๋‹ค๋ฅธ ์˜์—ญ์„ ํด๋ฆญ ํ•  ๊ฒฝ์šฐ ํ‚ค๋ณด๋“œ๊ฐ€ ๋‚ด๋ ค๊ฐ€๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

https://api.flutter.dev/flutter/widgets/FocusScope-class.html

 

FocusScope class - widgets library - Dart API

A FocusScope is similar to a Focus, but also serves as a scope for its descendants, restricting focus traversal to the scoped controls. For example a new FocusScope is created automatically when a route is pushed, keeping the focus traversal from moving to

api.flutter.dev

 

 

1) Scaffold์— Widget ์ถ”๊ฐ€

 

 

2) GestureDetector : onTap์œผ๋กœ FocusScope

FocusScope.of(context).unfocus();

 

 

 

3) ์ €์žฅํ•˜๊ณ  ๊ธฐ๋Šฅ ํ™•์ธ

 

 

๋ฐ˜์‘ํ˜•

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•