Flutter:如何在容器中添加一个浮动的actionbutton

ih99xse1  于 2023-01-27  发布在  Flutter
关注(0)|答案(1)|浏览(97)

我有下面的代码,我想添加一个浮动actionbutton来打开和关闭相机闪光灯。我尝试了不同的方式,但无法做到这一点。任何建议都将有所帮助。我累了不同的包,如 Torch , Torch 灯等,它没有工作,我想是因为我已经调用了相机包

import 'package:camera/camera.dart';
import 'package:flutter/material.dart';

class CameraScreen extends StatefulWidget {
CameraScreen({Key key, @required this.controller}) : super(key: key);
final CameraController controller;
@override
_CameraScreenState createState() => _CameraScreenState();
  }

class _CameraScreenState extends State<CameraScreen> {
@override
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size.width;

return Container(
  child: ShaderMask(
    shaderCallback: (rect) {
      return LinearGradient(
              begin: Alignment.topCenter,
              end: Alignment.center,
              colors: [Colors.black, Colors.transparent])
          .createShader(Rect.fromLTRB(0, 0, rect.width, rect.height / 4));
    },
    blendMode: BlendMode.darken,
    child: Transform.scale(
      scale: 1.0,
      child: AspectRatio(
        aspectRatio: MediaQuery.of(context).size.aspectRatio,
        child: OverflowBox(
          alignment: Alignment.center,
          child: FittedBox(
            fit: BoxFit.fitHeight,
            child: Container(
              width: size,
              height: size / widget.controller.value.aspectRatio,
              child: Stack(
                children: <Widget>[
                  CameraPreview(widget.controller),
                ],
              ),
            ),
          ),
        ),
      ),
    ),
  )
);
 }

   @override
   void dispose() {
      super.dispose();
    }
    }
hpcdzsge

hpcdzsge1#

你可以用scaffold Package 你的小部件,并可以在scaffold内添加浮动按钮,如下所示:

@override
  Widget build(BuildContext context) {
    final size = MediaQuery.of(context).size.width;
    return Scaffold(
      floatingActionButton: FloatingActionButton(onPressed: (){},),
      body: ShaderMask(
        shaderCallback: (rect) {
      return const LinearGradient(
              begin: Alignment.topCenter,
              end: Alignment.center,
              colors: [Colors.black, Colors.transparent])
          .createShader(Rect.fr

    ///// your code ///////

相关问题