首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图转换TextFormField

试图转换TextFormField
EN

Stack Overflow用户
提问于 2021-08-11 17:15:45
回答 1查看 29关注 0票数 0

我试图将TextEditingController转换为int,因为我希望通过使用TextEditingController从数据库中删除用户ID。

看一下:(<

这是我的密码:

代码语言:javascript
复制
import 'package:flutter/material.dart';
        import 'package:untitled/database.dart';
        import './model/columns.dart';
        import './database.dart';
        
        void main() {
          WidgetsFlutterBinding.ensureInitialized();
          runApp(MyApp());
        }
        
        class MyApp extends StatefulWidget {
          @override
          _MyAppState createState() => _MyAppState();
        }
        class _MyAppState extends State<MyApp> {
        
          @override
          void dispose() {
            textController.dispose();
            super.dispose();
          }
        
          final textController = TextEditingController();
          int? selectedId;
        
          @override
          Widget build(BuildContext context) {
            return MaterialApp(
              home: Scaffold(
                  appBar: AppBar(
                    title: Text("App"),
                  ),
                  body: Form(
                    child: Column(
                      children: [
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: TextField(
                            controller: textController,
                            decoration: InputDecoration(
                                labelText: "Insert row",
                                border: OutlineInputBorder(
                                    borderRadius: BorderRadius.circular(25))),
                          ),
                        ),
                        ElevatedButton(
                          child: Icon(Icons.save),
                          onPressed: () async {
                            await DatabaseHelper.instance
                                .insert(Users(name: textController.text));
                            setState(() {
                              textController.clear();
                            });
                            print("Inserted!");
                          },
                        ),
        
                        Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: TextFormField(
                            //controller: selectedId, // <-------
                            decoration: InputDecoration(
                                labelText: "Delete ID",
                                border: OutlineInputBorder(
                                    borderRadius: BorderRadius.circular(25))),
                            keyboardType: TextInputType.number,
                          ),
                        ),
                        ElevatedButton(
                          child: Icon(Icons.delete),
                          onPressed: () async {
                            DatabaseHelper.instance.delete(selectedId!); // <-------
                          },
                        ),
                        ElevatedButton(
                          child: Text("Check all rows"),
                          onPressed: () async {
                            print(await DatabaseHelper.instance.queryAll());
                          },
                        ),
                      ],
                    ),
                  )),
            );
          }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 17:56:50

创建另一个控制器,然后通过与int.parse(yourcontroller.text)进行转换,将输入的数据作为int传递

代码语言:javascript
复制
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  final textController = TextEditingController();
  final numberController = TextEditingController();

  @override
  void dispose() {
    textController.dispose();
    numberController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextFormField(
                controller: numberController,
                decoration: InputDecoration(
                    labelText: "Delete ID",
                    border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(25))),
                keyboardType: TextInputType.number,
              ),
            ),
            ElevatedButton(
              child: Icon(Icons.delete),
              onPressed: () async {
             DatabaseHelper.instance.delete(int.parse(numberController.text)); 
                print(int.parse(numberController.text));
              },
            ),
          ],
        ),
      ),
    );
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68746359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档