Flutter手机号码选择插件mobile_number_picker的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter手机号码选择插件mobile_number_picker的使用

注意:该插件仅适用于Android平台,因为iOS不支持获取手机号码。

Mobile Picker 使用 Google Auth Api 来访问凭证API,并从中检索电话号码提示选择器。

集成步骤

  1. 创建 Mobile Number Picker 类的对象。
MobileNumberPicker mobileNumber = MobileNumberPicker();
  1. 调用 mobileNumber() 函数来初始化 Auth API。
mobileNumber.mobileNumber();
  1. 监听 getMobileNumberStream 来获取事件。
mobileNumber.getMobileNumberStream.listen((event) {});

MobileNumber 类成员

  • String completeNumber:返回包括国家代码在内的完整手机号码,例如:+919999999999。
  • String phoneNumber:返回去掉国家代码后的手机号码,例如:9999999999。
  • String countryCode:返回所选手机号码的国家代码,例如:+91。
  • enum state:表示是否选择了手机号码。

状态类型

  • PhoneNumberSelected:当用户从提示选择器中选择一个号码时触发。
  • NoneOfTheAbove:当用户选择“以上都不是”选项或取消选择时触发。

截图

完整示例代码

import 'package:flutter/material.dart';
import 'package:mobile_number_picker/mobile_number_picker.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  MobileNumberPicker mobileNumber = MobileNumberPicker();
  MobileNumber mobileNumberObject = MobileNumber();

  [@override](/user/override)
  void dispose() {
    mobileNumber?.dispose();
    super.dispose();
  }

  [@override](/user/override)
  void initState() {
    super.initState();
    // 在框架构建后调用mobileNumber()
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) => mobileNumber.mobileNumber());
    // 监听getMobileNumberStream获取事件
    mobileNumber.getMobileNumberStream.listen((MobileNumber event) {
      if (event?.states == PhoneNumberStates.PhoneNumberSelected) {
        // 更新状态
        setState(() {
          mobileNumberObject = event;
        });
      }
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('手机号码插件'),
        ),
        body: Center(
          child: Text(
            // 显示手机号码和国家代码
            '手机号码: ${mobileNumberObject?.phoneNumber}\n 国家代码: ${mobileNumberObject?.countryCode}',
          ),
        ),
      ),
    );
  }
}

更多关于Flutter手机号码选择插件mobile_number_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter手机号码选择插件mobile_number_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用mobile_number_picker插件的示例代码。这个插件允许用户从国际电话号码列表中选择一个手机号码。首先,你需要确保你的Flutter项目中已经添加了mobile_number_picker依赖。

  1. pubspec.yaml文件中添加依赖
dependencies:
  flutter:
    sdk: flutter
  mobile_number_picker: ^x.y.z  # 请替换为最新版本号
  1. 运行flutter pub get命令来安装依赖

  2. 在你的Dart文件中使用MobileNumberPicker

import 'package:flutter/material.dart';
import 'package:mobile_number_picker/mobile_number_picker.dart';

void main() {
  runApp(MyApp());
}

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String selectedNumber = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Mobile Number Picker Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Selected Number: $selectedNumber',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                final result = await showDialog(
                  context: context,
                  builder: (BuildContext context) {
                    return AlertDialog(
                      title: Text('Select Mobile Number'),
                      content: SingleChildScrollView(
                        child: MobileNumberPicker(
                          favoriteCountries: ['+1', '+44', '+91'], // 可选:设置常用国家代码
                          selectedCountryCode: '+1', // 可选:设置默认国家代码
                          onChanged: (value) {
                            // 用户选择号码时的回调,可以在这里做处理
                            print('User selected: $value');
                          },
                        ),
                      ),
                      actions: <Widget>[
                        TextButton(
                          onPressed: () {
                            Navigator.of(context).pop();
                          },
                          child: Text('Cancel'),
                        ),
                        TextButton(
                          onPressed: () async {
                            final picker = context.findAncestorStateOfType<MobileNumberPickerState>();
                            if (picker != null) {
                              final selectedValue = await picker.getSelectedNumber();
                              setState(() {
                                selectedNumber = selectedValue;
                              });
                              Navigator.of(context).pop();
                            }
                          },
                          child: Text('OK'),
                        ),
                      ],
                    );
                  },
                );
              },
              child: Text('Select Mobile Number'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 依赖添加:在pubspec.yaml文件中添加了mobile_number_picker依赖。
  2. UI布局:在MyHomePage中,我们创建了一个简单的UI,包含一个显示选中号码的Text组件和一个打开号码选择对话框的ElevatedButton
  3. 对话框:点击按钮后,会弹出一个AlertDialog,里面包含了MobileNumberPicker组件。用户可以在对话框中选择国家代码和手机号码。
  4. 结果处理:当用户点击“OK”按钮时,通过MobileNumberPickerStategetSelectedNumber方法获取选中的号码,并更新UI。

请确保替换pubspec.yaml中的版本号x.y.z为最新的mobile_number_picker插件版本号。这个示例展示了如何使用mobile_number_picker插件来让用户选择手机号码,并在UI中显示选中的号码。

回到顶部