This commit is contained in:
xh 2024-07-23 19:58:15 +08:00
parent 0f7a9489a9
commit db01a24756
7 changed files with 90 additions and 84 deletions

View File

@ -9,10 +9,8 @@ import 'package:trans_lark/widget/base_appbar.dart';
import 'package:wave/config.dart'; import 'package:wave/config.dart';
import 'package:wave/wave.dart'; import 'package:wave/wave.dart';
class FaceToFaceView extends StatelessWidget { class FaceToFaceView extends GetView<FaceToFaceController> {
FaceToFaceView({super.key}); const FaceToFaceView({super.key});
final controller = Get.find<FaceToFaceController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -21,7 +19,7 @@ class FaceToFaceView extends StatelessWidget {
extendBody: true, extendBody: true,
backgroundColor: Colors.black, backgroundColor: Colors.black,
appBar: BaseAppBar( appBar: BaseAppBar(
backgroundColor: Colors.transparent , backgroundColor: Colors.transparent,
backColor: Colors.white, backColor: Colors.white,
onBackTap: controller.onBackTap, onBackTap: controller.onBackTap,
actionWidget: Padding( actionWidget: Padding(
@ -66,43 +64,54 @@ class FaceToFaceView extends StatelessWidget {
Obx(() { Obx(() {
return Visibility( return Visibility(
visible: !controller.selectedUnder.value, visible: !controller.selectedUnder.value,
child: SpeechToTextManager().isListening.value ? RotatedBox( child: SpeechToTextManager().isListening.value
quarterTurns: 2, ? RotatedBox(
child: WaveWidget( quarterTurns: 2,
config: CustomConfig( child: WaveWidget(
colors: [ config: CustomConfig(
const Color(0xff45A7FE).withOpacity(0.2), colors: [
const Color(0xff45A7FE), const Color(0xff45A7FE).withOpacity(0.2),
], const Color(0xff45A7FE),
durations: [4000, 8000], ],
heightPercentages: [-0.08, -0.08], durations: [4000, 8000],
), heightPercentages: [-0.08, -0.08],
size: const Size(double.infinity, double.infinity), ),
backgroundColor: Colors.transparent, size: const Size(double.infinity, double.infinity),
waveAmplitude: 4, backgroundColor: Colors.transparent,
// wavePhase: 0, waveAmplitude: 4,
// waveFrequency: 0, // wavePhase: 0,
), // waveFrequency: 0,
) : Container( ),
width: double.infinity, )
height: double.infinity, : Container(
color: const Color(0xff45A7FE), width: double.infinity,
), height: double.infinity,
color: const Color(0xff45A7FE),
),
); );
}), }),
Obx(() { Obx(() {
return Container( return Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.fromLTRB(30, SpeechToTextManager().isListening.value padding: EdgeInsets.fromLTRB(
? MediaQuery.of(context).padding.top + kToolbarHeight 30,
: 0, 30, 40), SpeechToTextManager().isListening.value
? MediaQuery.of(context).padding.top + kToolbarHeight
: 0,
30,
40),
child: AnimatedRotation( child: AnimatedRotation(
turns: controller.angle.value, turns: controller.angle.value,
duration: const Duration(milliseconds: 500), duration: const Duration(milliseconds: 500),
child: Column( child: Column(
mainAxisAlignment: SpeechToTextManager().isListening.value ? MainAxisAlignment.start : MainAxisAlignment.center, mainAxisAlignment: SpeechToTextManager().isListening.value
crossAxisAlignment: SpeechToTextManager().isListening.value ? CrossAxisAlignment.start : CrossAxisAlignment.center, ? MainAxisAlignment.start
: MainAxisAlignment.center,
crossAxisAlignment:
SpeechToTextManager().isListening.value
? CrossAxisAlignment.start
: CrossAxisAlignment.center,
children: [ children: [
if (!controller.selectedUnder.value) ...[ if (!controller.selectedUnder.value) ...[
SvgPicture.asset( SvgPicture.asset(
@ -114,7 +123,9 @@ class FaceToFaceView extends StatelessWidget {
], ],
Flexible( Flexible(
child: Visibility( child: Visibility(
visible: SpeechToTextManager().isListening.value && ObjUtil.isNotEmptyStr(controller.aboveText.value), visible: SpeechToTextManager().isListening.value &&
ObjUtil.isNotEmptyStr(
controller.aboveText.value),
replacement: const Text( replacement: const Text(
'Please start talking', 'Please start talking',
style: TextStyle( style: TextStyle(
@ -161,37 +172,45 @@ class FaceToFaceView extends StatelessWidget {
Obx(() { Obx(() {
return Visibility( return Visibility(
visible: controller.selectedUnder.value, visible: controller.selectedUnder.value,
child: SpeechToTextManager().isListening.value ? WaveWidget( child: SpeechToTextManager().isListening.value
config: CustomConfig( ? WaveWidget(
colors: [ config: CustomConfig(
const Color(0xff87ECB3).withOpacity(0.2), colors: [
const Color(0xff87ECB3), const Color(0xff87ECB3).withOpacity(0.2),
], const Color(0xff87ECB3),
durations: [4000, 8000], ],
heightPercentages: [-0.08, -0.08], durations: [4000, 8000],
), heightPercentages: [-0.08, -0.08],
size: const Size(double.infinity, double.infinity), ),
backgroundColor: Colors.transparent, size: const Size(double.infinity, double.infinity),
waveAmplitude: 4, backgroundColor: Colors.transparent,
// wavePhase: 0, waveAmplitude: 4,
// waveFrequency: 0, // wavePhase: 0,
) : Container( // waveFrequency: 0,
width: double.infinity, )
height: double.infinity, : Container(
color: const Color(0xff87ECB3), width: double.infinity,
), height: double.infinity,
color: const Color(0xff87ECB3),
),
); );
}), }),
Obx(() { Obx(() {
return Container( return Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.fromLTRB(30, SpeechToTextManager().isListening.value padding: EdgeInsets.fromLTRB(
? 80 30,
: 0, 30, MediaQuery.of(context).padding.bottom), SpeechToTextManager().isListening.value ? 80 : 0,
30,
MediaQuery.of(context).padding.bottom),
child: Column( child: Column(
mainAxisAlignment: SpeechToTextManager().isListening.value ? MainAxisAlignment.start : MainAxisAlignment.center, mainAxisAlignment: SpeechToTextManager().isListening.value
crossAxisAlignment: SpeechToTextManager().isListening.value ? CrossAxisAlignment.start : CrossAxisAlignment.center, ? MainAxisAlignment.start
: MainAxisAlignment.center,
crossAxisAlignment: SpeechToTextManager().isListening.value
? CrossAxisAlignment.start
: CrossAxisAlignment.center,
children: [ children: [
if (controller.selectedUnder.value) ...[ if (controller.selectedUnder.value) ...[
SvgPicture.asset( SvgPicture.asset(
@ -203,7 +222,8 @@ class FaceToFaceView extends StatelessWidget {
], ],
Flexible( Flexible(
child: Visibility( child: Visibility(
visible: SpeechToTextManager().isListening.value && ObjUtil.isNotEmptyStr(controller.underText.value), visible: SpeechToTextManager().isListening.value &&
ObjUtil.isNotEmptyStr(controller.underText.value),
replacement: const Text( replacement: const Text(
'Please start talking', 'Please start talking',
style: TextStyle( style: TextStyle(
@ -235,4 +255,4 @@ class FaceToFaceView extends StatelessWidget {
), ),
); );
} }
} }

View File

@ -95,7 +95,6 @@ class HomeLogic extends GetxController {
SceneEntity entity = sceneTypeList[x]; SceneEntity entity = sceneTypeList[x];
if (entity.sceneList != null && entity.sceneList!.isNotEmpty) { if (entity.sceneList != null && entity.sceneList!.isNotEmpty) {
var y = NumUtil.getRandomNumber(0, entity.sceneList!.length); var y = NumUtil.getRandomNumber(0, entity.sceneList!.length);
fromStr.value = _getSentence(true, entity.sceneList![y]); fromStr.value = _getSentence(true, entity.sceneList![y]);
toStr.value = _getSentence(false, entity.sceneList![y]); toStr.value = _getSentence(false, entity.sceneList![y]);
} }

View File

@ -15,14 +15,10 @@ class HomePage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Container( body: Container(
width: double.infinity,
height: double.infinity,
padding: const EdgeInsets.symmetric(horizontal: 20), padding: const EdgeInsets.symmetric(horizontal: 20),
decoration: const BoxDecoration( decoration: const BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage( image: AssetImage(Assets.imagesHomeBackground),
Assets.imagesHomeBackground,
),
fit: BoxFit.fill, fit: BoxFit.fill,
), ),
), ),
@ -429,8 +425,7 @@ class HomePage extends StatelessWidget {
padding: const EdgeInsets.all(5), padding: const EdgeInsets.all(5),
decoration: BoxDecoration( decoration: BoxDecoration(
color: const Color(0xff8BCFFE), color: const Color(0xff8BCFFE),
borderRadius: borderRadius: BorderRadius.circular(18),
BorderRadius.circular(18),
), ),
child: SvgPicture.asset( child: SvgPicture.asset(
Assets.svgHomeVoice, Assets.svgHomeVoice,

View File

@ -8,10 +8,8 @@ import 'package:trans_lark/widget/base_appbar.dart';
import 'package:trans_lark/widget/base_scrollbar.dart'; import 'package:trans_lark/widget/base_scrollbar.dart';
import 'package:trans_lark/widget/language_scene_bar.dart'; import 'package:trans_lark/widget/language_scene_bar.dart';
class SceneListView extends StatelessWidget { class SceneListView extends GetView<SceneListController> {
SceneListView({super.key}); const SceneListView({super.key});
final controller = Get.find<SceneListController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -10,19 +10,17 @@ class SettingsController extends GetxController {
@override @override
void onReady() { void onReady() {
super.onReady(); super.onReady();
_getVersion(); _getAppVersion();
} }
/// ///
void _getVersion() async { void _getAppVersion() async {
final packageInfo = await PackageInfo.fromPlatform(); final packageInfo = await PackageInfo.fromPlatform();
versionName.value = 'version number ${packageInfo.version}'; versionName.value = 'version number ${packageInfo.version}';
} }
void itemOnTap(int index) { void itemOnTap(int index) {
if (index == -1) { if (index == 0) {
} else if (index == 0) {
Get.toNamed(GetRouter.privacy, arguments: { Get.toNamed(GetRouter.privacy, arguments: {
'title': options[index], 'title': options[index],
'url': 'https://translark.bitbucket.io/privacy.html', 'url': 'https://translark.bitbucket.io/privacy.html',

View File

@ -2,10 +2,8 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:trans_lark/page/splash/splash_controller.dart'; import 'package:trans_lark/page/splash/splash_controller.dart';
class SplashView extends StatelessWidget { class SplashView extends GetView<SplashController> {
SplashView({super.key}); const SplashView({super.key});
final controller = Get.find<SplashController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -5,10 +5,8 @@ import 'package:trans_lark/widget/base_appbar.dart';
import 'package:trans_lark/widget/view_state_widget.dart'; import 'package:trans_lark/widget/view_state_widget.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
class WebPageView extends StatelessWidget { class WebPageView extends GetView<WebPageController> {
WebPageView({super.key}); const WebPageView({super.key});
final controller = Get.find<WebPageController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {