我正在尝试将linkedin登录集成到flutter中,但我在实现它时出错。
这是我得到的错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: MissingPluginException(No implementation found for method close on channel flutter_webview_plugin)
E/flutter ( 4885): #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:157:7)
E/flutter ( 4885): <asynchronous suspension>
E/flutter ( 4885): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12)
E/flutter ( 4885): #2 FlutterWebviewPlugin.close (package:flutter_webview_plugin/src/base.dart:238:20)
E/flutter ( 4885): #3 _WebviewScaffoldState.initState (package:flutter_webview_plugin/src/webview_scaffold.dart:93:22)
E/flutter ( 4885): #4 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4765:58)
E/flutter ( 4885): #5 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter ( 4885): #6 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter ( 4885): #7 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter ( 4885): #8 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter ( 4885): #9 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter ( 4885): #10 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter ( 4885): #11 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter ( 4885): #12 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
E/flutter ( 4885): #13 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter ( 4885): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter ( 4885): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter ( 4885): #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter ( 4885): #17 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter ( 4885): #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter ( 4885): #19 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter ( 4885): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter ( 4885): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter ( 4885): #22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter ( 4885): #23 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter ( 4885): #24 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter ( 4885): #25 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter ( 4885): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter ( 4885): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter ( 4885): #28 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter ( 4885): #29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter ( 4885): #30 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter ( 4885): #31 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter ( 4885): #32 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter ( 4885): #33 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter ( 4885): #34 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter ( 4885): #35 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter ( 4885): #36 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter ( 4885): #37 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter ( 4885): #38 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter ( 4885): #39 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter ( 4885): #40 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter ( 4885): #41 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter ( 4885): #42 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter ( 4885): #43 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter ( 4885): #44 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14
以下是我的代码:
import 'dart:convert';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:flutter/gestures.dart';
import 'package:http/http.dart' as http;
import 'package:flutter_linkedin/linkedloginflutter.dart';
class LoginScreen extends StatefulWidget {
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
final GlobalKey<ScaffoldState> _scaffoldkey = new GlobalKey<ScaffoldState>();
final String clientId = 'Client ID here';
final String clientSecret = 'Client Secret Here';
@override
void initState() {
LinkedInLogin.initialize(context,
clientId: clientId,
clientSecret: clientSecret);
super.initState();
}
@override
Widget build(BuildContext context) {
// TODO: implement build
SystemChrome.setEnabledSystemUIOverlays([]);
return Scaffold(
key: _scaffoldkey,
appBar: AppBar(
title: RichText(
text: TextSpan(
text: 'App',
style: TextStyle(color: Colors.white,fontSize: 30),
children: <TextSpan>[
TextSpan(text: 'Bar', style: TextStyle(color: Colors.red,fontSize: 30)),
],
),
),
centerTitle: true,
backgroundColor: Colors.lightBlue[900],
),
body: SingleChildScrollView(
scrollDirection: Axis.vertical,
padding: EdgeInsets.symmetric(
vertical: 40.0,
),
child: Column(
children: [
Text(
'Login',
style: TextStyle(
color: Colors.lightBlue[900],
fontFamily: 'OpenSans',
fontSize: 30.0,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 30.0),
Container(
padding: EdgeInsets.symmetric(
horizontal: 40.0,
),
),
Container(
padding: EdgeInsets.symmetric(
horizontal: 40.0,
),
child: Column(
children: [
_buildSocialBtnRow(),
],
),
),
],
),
),
);
}
Widget _buildSocialBtn(Function onTap, AssetImage logo) {
return GestureDetector(
onTap: onTap,
child: Container(
height: 60.0,
width: 60.0,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black26,
offset: Offset(0, 2),
blurRadius: 6.0,
),
],
image: DecorationImage(
image: logo,
),
),
),
);
}
Widget _buildSocialBtnRow() {
return Padding(
padding: EdgeInsets.symmetric(vertical: 30.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
_buildSocialBtn(
() => {
LinkedInLogin.loginForAccessToken(
destroySession: true,
appBar: AppBar(
title: Text('Demo Login Page'),
)
) .then((accessToken) => print(accessToken) )
.catchError((error){
print(error.errorDescription);
}),
LinkedInLogin.getProfile(
destroySession: true,
forceLogin: true,
appBar: AppBar(
title: Text('Demo Login Page'),
)
) .then((profile) => print(profile.toJson().toString()) )
.catchError((error){
print(error.errorDescription);
}),
LinkedInLogin.getEmail(
destroySession: true,
forceLogin: true,
appBar: AppBar(
title: Text('Demo Login Page'),
)
) .then((email) => print(email.toJson().toString()) )
.catchError((error){
print(error.errorDescription);
})
},
AssetImage(
'logos/linkedin.jpg',
),
),
_buildSocialBtn(
() => print('Login with Google'),
AssetImage(
'logos/google.jpg',
),
),
],
),
);
}
我在我的 pubsec.yaml 文件中添加了依赖项:flutter_linkedin: ^1.0.2 并按照其中给出的说明进行操作,但仍然无法正常工作。 有人可以帮我解决这个问题吗?