【发布时间】:2022-07-28 03:55:34
【问题描述】:
所以我尝试在 Flutter 中发送电子邮件作为后台进程,而无需浏览 gmail 应用程序,我按照本教程进行操作 https://www.youtube.com/watch?v=RDwst9icjAY 并且除了图标按钮上的“onpressed(){}”功能外,所有东西都在工作,它显示在声明之前无法引用“局部变量”sendEmail”的错误。 尝试将声明移至第一次使用之前,或重命名局部变量,使其不会在封闭范围内隐藏名称。没有快速修复,所以似乎是什么问题?,我尝试在多个地方初始化它,但我想我是这些类型的功能的新手。 这是我的代码
import 'package:flutter/material.dart';
import 'package:mailer/mailer.dart';
import 'package:mailer/smtp_server.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'google_auth_api.dart';
class emailsend extends StatefulWidget {
const emailsend({Key? key}) : super(key: key);
@override
State<emailsend> createState() => _MainPageState();
}
class _MainPageState extends State<emailsend> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('email'),
centerTitle: true,
),
body: Center(
child: IconButton(
icon: Icon(Icons.circle_rounded),
splashColor: Colors.red,
color: Colors.red,
iconSize: 250,
onPressed:(){ sendEmail},
),
),
);
Future sendEmail() async {
final user = await GoogleAuthApi.signIn();
if (user == null) return;
final email = 'khaledkandli55@gmail.com';
final auth = await user.authentication;
final accessToken = '';
final smptServer = gmailSaslXoauth2(email, accessToken);
final message = Message()
..from = Address(email, 'Khaled')
..recipients = ['khaledkandli55@gmail.com']
..subject = 'Hello'
..text = 'this is atext email';
try {
await send(message, smptServer);
showSnackBar('sent successfully');
} on MailerException catch (erorr) {
print(erorr);
}
}
}
void showSnackBar(String text) {
final snackBar = SnackBar(
content: Text(
text,
style: TextStyle(fontSize: 20),
),
backgroundColor: Colors.green,
);
ScaffoldMessenger.of(context)
..removeCurrentSnackBar()
..showSnackBar(snackBar);
}
}
//第二页
import 'package:google_sign_in/google_sign_in.dart';
class GoogleAuthApi {
static final _googleSignIn =
GoogleSignIn(scopes: ['https://mail.google.com/']);
static Future<GoogleSignInAccount?> signIn() async {
if (await _googleSignIn.isSignedIn()) {
return _googleSignIn.currentUser;
} else {
return await _googleSignIn.signIn();
}
}
}
【问题讨论】:
标签: flutter email sms flutter-futurebuilder