vk_login 1.0.1 vk_login: ^1.0.1 copied to clipboard
Service for authorization via VK. Authorization takes place via webview. You do not need to have a registered VK standalone application
vk_login #
A Flutter package for authorization via VK.
Usage #
Add vk_login
as a dependency in your pubspec.yaml file. If you are targeting Android, make sure to read the Android Platform Views section below to choose the platform view mode that best suits your needs.
Getting Started #
- Set the correct
minSdkVersion
inandroid/app/build.gradle
(if it was previously lower than 19):
android {
defaultConfig {
minSdkVersion 19
}
}
- Add
android:usesCleartextTraffic="true"
in yourAndroidManifest.xml
<manifest ...>
<application
android:label="label"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true">
Example in application #
You need to wrap your MaterialApp with ChangeNotifierProvider
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:vk_login/vk_login.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => VkProvider(),
child: MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: Text('Material App Bar'),
),
body: HomePage(),
),
),
);
}
}
First you must to call init()
class HomePage extends StatelessWidget {
late VkProvider _vk;
@override
Widget build(BuildContext context) {
_vk = Provider.of<VkProvider>(context);
return FutureBuilder(
future: _vk.init(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(
child: Text('Loading...'),
);
return Column(
children: [
TextButton(
onPressed: () => _vk.login(context,
permissions: [VKScope.stats, VKScope.groups, VKScope.messages, VKScope.wall, VKScope.offline]),
child: Text('login')),
TextButton(onPressed: () => _vk.logout(), child: Text('logout')),
if (_vk.profile != null) Text('${_vk.profile!.firstName}'),
],
);
});
}
}