কীভাবে ঝাঁকুনিতে নম্বর ইনপুট ক্ষেত্র তৈরি করবেন?


126

আমি ফ্লুটারে এমন একটি ইনপুট ক্ষেত্র তৈরির এমন কোনও উপায় খুঁজে পাচ্ছি না যা একটি নম্বরযুক্ত কীবোর্ড খুলবে। এলোমেলো উপাদান উইজেটগুলি দিয়ে কি এটি সম্ভব? কিছু গিথুব আলোচনাগুলি এটি একটি সমর্থিত বৈশিষ্ট্য বলে মনে হচ্ছে তবে আমি এটি সম্পর্কে কোনও দলিল খুঁজে পাচ্ছি না।


কীবোর্ড টাইপ কীবোর্ড টাইপ যুক্ত করুন: পাঠ্য ইনপুট টাইপ.নম্বার,
ইশান ফার্নান্দো

উত্তর:


248

আপনি যত সংখ্যা নির্দিষ্ট করতে পারেন keyboardType জন্য পাঠ্যক্ষেত্র ব্যবহার করছে:

keyboardType: TextInputType.number

আমার main.dart ফাইলটি পরীক্ষা করুন

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new MaterialApp(
      home: new HomePage(),
      theme: new ThemeData(primarySwatch: Colors.blue),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new HomePageState();
  }
}

class HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      backgroundColor: Colors.white,
      body: new Container(
          padding: const EdgeInsets.all(40.0),
          child: new Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          new TextField(
            decoration: new InputDecoration(labelText: "Enter your number"),
            keyboardType: TextInputType.number,
            inputFormatters: <TextInputFormatter>[
    WhitelistingTextInputFormatter.digitsOnly
], // Only numbers can be entered
          ),
        ],
      )),
    );
  }
}

এখানে চিত্র বর্ণনা লিখুন


3
উজ্জ্বল, ধন্যবাদ! আমি সত্যিই চাই ফ্লিটার কনস্ট্রাক্টরের ডকুমেন্টেশনগুলি এত খারাপভাবে ফর্ম্যাট না করা হত। এটি পুরোপুরি মিস হয়েছে।
জান্নে আনালালা

8
তবে আমি সেই ক্ষেত্রের পাঠ্যগুলি (অক্ষরগুলি) পেস্ট করতে পারি আপনার কি অন্য কোনও বিকল্প আছে? @ রিসমন সুরেশ
তিরুমাল গোবিন্দরাজ

5
ভুলে যাবেন না => আমদানি করুন 'প্যাকেজ: বিড়ম্বনা / পরিষেবাদি.ডার্ট';
উইলমার

বিন্দু, স্থান এবং ইমোজি পেস্ট করার অনুমতি দেয়
Agilob

5
ইনপুট ফরমেটারস: [হোয়াইটলিস্টিংটেক্সট ইনপুটফর্ম্যাটর.ডিজিটস কেবল] এখানেও প্রয়োজনীয়, কারণ উত্তরে কমা এবং ডট এখনও এখানে গ্রহণযোগ্য।
রবি যাদব

79

যারা কেবলমাত্র সংখ্যাগুলি ইনপুট হিসাবে তৈরি করতে TextFieldবা TextFormFieldগ্রহণ করার জন্য সন্ধান করছেন তাদের জন্য এই কোডটি ব্লক করে দেখুন:

TextFormField(
    controller: _controller,
    keyboardType: TextInputType.number,
    inputFormatters: <TextInputFormatter>[
        WhitelistingTextInputFormatter.digitsOnly
    ],
    decoration: InputDecoration(
        labelText:"whatever you want", 
        hintText: "whatever you want",
        icon: Icon(Icons.phone_iphone)
    )
)

3
ধন্যবাদ, অংকের অঙ্কের স্ট্রিংগুলি (ইনপুটফর্মেটরগুলি) পেস্ট করা এড়াতে স্বাগত।
মারিয়ানো আরগেরাজ

2
এটি Flutter_web তেও ভাল কাজ করে। ঝাঁকুনি_বিহীন হওয়ার কারণ আমরা একটি সংখ্যার কীবোর্ড প্রয়োগ করতে পারি না তাই বিধিনিষেধ প্রাকৃতিক বিকল্প। ধন্যবাদ @ বিলালিমাইক
অভিলাস চন্দ্রন

1
এই নিখুঁত সমাধান!
কবিতা জয়কোডি

31

এই বিকল্পের মাধ্যমে আপনি আউট সংখ্যা সহ আরও একটি চর কঠোরভাবে সীমাবদ্ধ করতে পারেন।

 inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],
 keyboardType: TextInputType.number,

উপরের বিকল্পটি ব্যবহার করার জন্য আপনাকে এটি আমদানি করতে হবে

import 'package:flutter/services.dart';

এই ধরণের অপশন ব্যবহার করে ব্যবহারকারী কোনও পাঠ্যক্ষেত্রের অক্ষর আটকে দিতে পারে না


এটি প্রকৃত বিস্তৃত উত্তর। বিন্যাস ছাড়াই কেবল কিবোর্ড সেট করা যথেষ্ট নয়।
শভাভাষিক সিদ্দিক

আমি যদি দশমিক এবং অঙ্ক চাই কীভাবে "যোগ করুন"। বিন্যাসের শ্বেত তালিকাতে?
শভাভাষিক সিদ্দিক

19

কীবোর্ড এবং একটি বৈধকরণকারী সেট করুন

String numberValidator(String value) {
  if(value == null) {
    return null;
  }
  final n = num.tryParse(value);
  if(n == null) {
    return '"$value" is not a valid number';
  }
  return null;
}

new TextFormField(
    keyboardType: TextInputType.number, 
    validator: numberValidator, 
    textAlign: TextAlign.right
    ...

ত্রুটি হয়েছে: স্থানীয় ভেরিয়েবল
নামটি

ঠিক আছে, numভেরিয়েবলের নামটি কাজ করে না। নামটি পরিবর্তন করা দরকার
গন্টার জ্যাচবাউর

1
দস্তাবেজগুলি থেকে: অনারআর প্যারামিটারটি অবচয় করা হয়েছে এবং সরানো হবে। Num.parse (স্ট্রিং, (স্ট্রিং) {...}) এর পরিবর্তে আপনার num.ryParse (স্ট্রিং) ব্যবহার করা উচিত ?? (...)।
কাশলো

13

যাদের পাঠ্য ক্ষেত্রে অর্থের ফর্ম্যাট নিয়ে কাজ করা দরকার :

কেবলমাত্র ব্যবহারের জন্য :, (কমা) এবং। (আমল)

এবং প্রতীকটি অবরুদ্ধ করুন: - (হাইফেন, বিয়োগ বা ড্যাশ)

পাশাপাশি: ⌴ (ফাঁকা জায়গা)

আপনার টেক্সটফিল্ডে, কেবল নিম্নলিখিত কোডটি সেট করুন:

keyboardType: TextInputType.numberWithOptions(decimal: true),
inputFormatters: [BlacklistingTextInputFormatter(new RegExp('[\\-|\\ ]'))],

সিম্বলস হাইফেন এবং স্থান এখনও কীবোর্ডে উপস্থিত হবে তবে তা অবরুদ্ধ হয়ে যাবে।


আপনি কি জানেন যে কেবলমাত্র একটি কমা বা পিরিয়ডের অনুমতি দেওয়া যায়?
হেডি ফ্রাঙ্কো

1
@ হেইডি ফ্র্যাঙ্কো রিজেক্স বিকাশকারী
ডকস

5

আপনি এই দুটি বৈশিষ্ট্য টেক্সটফর্মফিল্ডের সাথে একসাথে ব্যবহার করতে পারেন

 TextFormField(
         keyboardType: TextInputType.number
         inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],

এটি কেবল সংখ্যা রাখার অনুমতি দেয়, অন্য কিছু নয় ..

https://api.flutter.dev/flutter/services/TextInputFormatter-class.html


2

আপনি কীবোর্ড টাইপ প্যারামিটারটি ব্যবহার করে সহজেই ইনপুট প্রকারটি পরিবর্তন করতে পারেন এবং আপনার কাছে অনেকগুলি সম্ভাবনা রয়েছে ডকুমেন্টেশন টেক্সটইনপুট টাইপ চেক করুন যাতে আপনি নম্বর বা ফোনের মান ব্যবহার করতে পারেন

 new TextField(keyboardType: TextInputType.number)

2

আপনি এটি চেষ্টা করতে পারেন:

TextFormField(
     keyboardType: TextInputType.number,
     decoration: InputDecoration(
              prefixIcon: Text("Enter your number: ")
     ),
     initialValue: "5",
     onSaved: (input) => _value = num.tryParse(input),
),

1

keyboardType: TextInputType.number ফোকাসে একটি নাম প্যাড খুলতে হবে, আমি পাঠ্য ক্ষেত্রটি সাফ করব যখন ব্যবহারকারী প্রবেশ করে / অন্য কোনও কিছু প্রবেশ করে।

keyboardType: TextInputType.number,
onChanged: (String newVal) {
    if(!isNumber(newVal)) {
        editingController.clear();
    }
}

// Function to validate the number
bool isNumber(String value) {
    if(value == null) {
        return true;
    }
    final n = num.tryParse(value);
    return n!= null;
}

1

অ্যান্ড্রয়েডে প্রকৃত ফোন কীবোর্ডের কোড এখানে:

মূল অংশ: keyboardType: TextInputType.phone,

  TextFormField(
    style: TextStyle(
      fontSize: 24
    ),
    controller: _phoneNumberController,
    keyboardType: TextInputType.phone,
    decoration: InputDecoration(
      prefixText: "+1 ",
      labelText: 'Phone number'),
    validator: (String value) {
      if (value.isEmpty) {
        return 'Phone number (+x xxx-xxx-xxxx)';
      }
      return null;
    },
  ),

0

এখানে সংখ্যার কীবোর্ডের কোড রয়েছে: কীবোর্ড টাইপ: পাঠ্যপিন্ড টাইপ.ফোন আপনি যখন এই কোডটি পাঠ্যক্ষেত্রটিতে যুক্ত করবেন এটি সংখ্যার কীবোর্ডটি খুলবে।

  final _mobileFocus = new FocusNode();
  final _mobile = TextEditingController();


     TextFormField(
          controller: _mobile,
          focusNode: _mobileFocus,
          maxLength: 10,
          keyboardType: TextInputType.phone,
          decoration: new InputDecoration(
            counterText: "",
            counterStyle: TextStyle(fontSize: 0),
            hintText: "Mobile",
            border: InputBorder.none,
            hintStyle: TextStyle(
              color: Colors.black,
                fontSize: 15.0.
            ),
          ),
          style: new TextStyle(
              color: Colors.black,
              fontSize: 15.0,
           ),
          );

স্ট্যাক ওভারফ্লোতে স্বাগতম! এটি কোড সহ কীভাবে কাজ করে সে সম্পর্কে অন্তত কিছু প্রসঙ্গ অন্তর্ভুক্ত করুন।
জিক্সুয়ান

0

সংখ্যার ইনপুট বা সংখ্যাসূচক কীবোর্ডের জন্য আপনি কীবোর্ড টাইপ: পাঠ্য ইনপুট টাইপ.নম্বার ব্যবহার করতে পারেন

TextFormField(
  decoration: InputDecoration(labelText:'Amount'),
    controller: TextEditingController(
  ),
  validator: (value) {
    if (value.isEmpty) {
      return 'Enter Amount';
    }
  },
  keyboardType: TextInputType.number
)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.