颤振方法通道

问题描述

我正在Flutter中实现一个方法通道,以使用认的消息传递应用程序发送textMessage,但是它不起作用。其余所有程序流都可以正常工作,只是未发送消息。首先它试图发送消息,但是在设备消息传递应用程序中获得了失败状态,现在它什么也不做。相反,我的程序流从通道返回后,我在Android Studio中收到了此消息

V / PhoneWindow(5722):DecorView setVisiblity:可见性= 0,父级= android.view.ViewRootImpl@76c918b,此= DecorView @ a148268 [MainActivity]

我刚开始学习颤动并开始学习科特林 我正在Xiomi Redmi 6A,API 28上测试此代码

import androidx.annotation.NonNull
import android.Manifest
import android.view.View
import android.telephony.SmsManager
import io.Flutter.embedding.android.FlutterActivity
import io.Flutter.embedding.engine.FlutterEngine
import io.Flutter.plugin.common.MethodChannel

class MainActivity: FlutterActivity() {

      private val channel  = "com.myReflectionThoughts/sendConfirmation";

     override fun configureFlutterEngine(@NonNull FlutterEngine: FlutterEngine){
        super.configureFlutterEngine(FlutterEngine)

    MethodChannel(FlutterEngine.dartExecutor.binaryMessenger,channel).setMethodCallHandler{
        call,result->
        val arguments = call.arguments<Map<String,Any>>()
        if(call.method == "sendConfirmation"){
        var confirmationMessage = "Your Order has been Accepted !!\n"+"TOD:- "+arguments["Tod"]+",Amount:- \u20B9"+arguments["amount"]+",Address:- "+arguments["address"]
        requestPermissions(arrayOf(Manifest.permission.SEND_SMS),10)

            val smsManager = SmsManager.getDefault()
            smsManager.sendTextMessage(arguments["contact"].toString(),null,confirmationMessage,null)
            result.success("Confirmation Sent!!")
        }
        else{
            result.error("Pta nahi","Kuch galat ho gya",null)
        }
    }
    }
}

这是我从中调用MEthodChannel的dart文件

class SwipeOrderTile extends StatefulWidget {
  @override
  _SwipeOrderTileState createState() => _SwipeOrderTileState();
}

class _SwipeOrderTileState extends State<SwipeOrderTile> {
  // bool to check if we need to see the order delivery
  bool _showOrderDetails = false;
  Order ord;
  static const platformchannel =
  MethodChannel("com.myReflectionThoughts/sendConfirmation");

  Widget createCustomContainer(dynamic child) {
    return Container(
        margin: EdgeInsets.all(2),padding: EdgeInsets.all(2),height: 25,width: double.infinity,child: child);
  }



  @override
  Widget build(BuildContext context) {
    final order = Provider.of<Order>(context);
    ord = order;

    return dismissible(
      key: ValueKey(order.orderId),dismissthresholds: {dismissDirection.endToStart: 0.40},confirmdismiss: (direction) {
        if (direction == dismissDirection.endToStart)
          // Code To Remove this Order
          return showDialog(
              context: context,builder: (ctx) {
                return AlertDialog(
                  title: Text(
                    '!! Confirm Action !!',style: TextStyle(fontWeight: FontWeight.bold),textAlign: TextAlign.center,),contentPadding: const EdgeInsets.all(4),content: Text(
                    'Accept this Order ?',style: TextStyle(
                      fontWeight: FontWeight.bold,actions: [
                    FlatButton(
                        child: Text('Yes',style: TextStyle(fontWeight: FontWeight.bold)),onpressed: () async {
                          try {
                            Navigator.of(context).pop(false);

                            final dataMap = <String,dynamic>{
                              'Tod': order.timeOfDelivery,'amount': order.amount,'address': order.address,'contactNumber': order.contact
                            };
                         final response = await platformchannel.invokeMethod("sendConfirmation",dataMap);
                             print(response + " DartFile");
                           await Provider.of<RestaurantManager>(context,listen: false)
                            .setorderStatus(order.serverId,true);
                          } catch (error) {
                            print(error.toString());
                            print("Error Occured while Sending Message");
                          }
                        }),FlatButton(
                      child: Text('NO',onpressed: () {
                        Navigator.of(context).pop(false);
                      },)
                  ],);
              });
        else {
          return showDialog(
              context: context,content: Text(
                    'Decline this Order ?',actions: [
                    FlatButton(
                        child: Text('Yes'),onpressed: () {
                          Navigator.of(context).pop(true);
                          Provider.of<RestaurantManager>(context,listen: false)
                              .setorderStatus(order.serverId,false);
                        }),FlatButton(
                      child: Text('NO'),);
              });
        }
      },

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)