poem_publish.dart 5.67 KB
import 'package:flutter/material.dart';
import 'package:one_poem/res/resources.dart';
import 'package:one_poem/routers/fluro_navigator.dart';
import 'package:one_poem/routers/routers.dart';
import 'package:one_poem/util/toast_utils.dart';
import 'package:one_poem/widgets/my_app_bar.dart';

import 'package:one_poem/extension/int_extension.dart';

import '../poem_router.dart';

class PoemPublish extends StatefulWidget {
  const PoemPublish({Key? key, required this.data}) : super(key: key);

  final String data;
  @override
  _PoemPublishState createState() => _PoemPublishState();
}

class _PoemPublishState extends State<PoemPublish> {
  @override
  void initState() {
    super.initState();
  }

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

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: _isExit,
      child: Scaffold(
        appBar: MyAppBar(
          homeMenuHeader: Container(
            alignment: Alignment.center,
            width: double.infinity,
            child: const Text(
              "发布临境",
              style: TextStyle(
                color: Colors.white,
              ),
            ),
          ),
        ),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(
                10.0,
              ),
              child: ConstrainedBox(
                constraints: const BoxConstraints(
                  maxHeight: 200,
                  maxWidth: double.infinity,
                ),
                child: TextField(
                  maxLines: 10,
                  decoration: InputDecoration(
                    contentPadding: const EdgeInsets.all(10.0),
                    hintText: '读此一言,仿佛身临其境',
                    border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(5),
                        borderSide: BorderSide.none),
                    filled: true,
                    fillColor: Colors.grey.shade100,
                  ),
                ),
              ),
            ),
            Container(
              padding: EdgeInsets.all(10.px),
              alignment: Alignment.centerLeft,
              width: double.infinity,
              height: 36.px,
              child: Wrap(
                children: [
                  Icon(
                    Icons.room_outlined,
                    size: 15.px,
                  ),
                  Gaps.hGap5,
                  const Text(
                    "我在此地",
                    style: TextStyle(color: Colors.black45),
                  ),
                ],
              ),
            ),
            Container(
              padding: EdgeInsets.all(10.px),
              alignment: Alignment.centerLeft,
              width: double.infinity,
              height: 36.px,
              child: Wrap(
                children: [
                  Icon(
                    Icons.record_voice_over_outlined,
                    size: 15.px,
                  ),
                  Gaps.hGap5,
                  const Text(
                    "所用口音",
                    style: TextStyle(color: Colors.black45),
                  ),
                  Gaps.hGap10,
                  const Text(
                    "普通话",
                    style: TextStyle(color: Colors.black45),
                  ),
                ],
              ),
            ),
            const Spacer(),
            Expanded(
              child: Center(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.center,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Text(
                      "发布临境,让更多人身临其境",
                      style: TextStyle(fontSize: 14.px),
                    ),
                    Gaps.vGap10,
                    TextButton(
                      style: ButtonStyle(
                        side: MaterialStateProperty.all(
                          BorderSide(
                            color: Colors.black54,
                            width: 1.px,
                          ),
                        ),
                      ),
                      onPressed: () {
                        publishPoem(context);
                      },
                      child: Text(
                        "发布",
                        style:
                            TextStyle(color: Colors.black54, fontSize: 15.px),
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }

  void publishPoem(BuildContext context) {
    NavigatorUtils.push(
      context,
      '${PoemRouter.poemCompletePage}?id=100',
    );
  }

  Future<bool> _isExit() async {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: const Text("温馨提示"),
          content: Container(
            padding: EdgeInsets.all(1.px),
            //可滑动布局
            child: const Text("确认放弃此次作品吗?"),
          ),
          actions: [
            TextButton(
              child: const Text("再想想"),
              onPressed: () {
                Navigator.of(context).pop(true);
              },
            ),
            TextButton(
              child: const Text("残忍放弃"),
              onPressed: () {
                NavigatorUtils.push(context, Routes.home, clearStack: true);
              },
            ),
          ],
        );
      },
    );
    return Future.value(false);
  }
}