MyAppState没有显示任何内容

时间:2020-03-04 06:40:03

标签: android flutter dart flutter-layout dart-pub

   $m = DB::table('platform_merchants')->where('email', $request->get('email'))->first();

        $tickets = DB::table('platform_merchants')
            ->join('platform_customers', 'platform_merchant_id', '=', 'platform_merchants.id')
            ->join('tickets', 'platform_user_id', '=', 'platform_customers.id')
            ->where('platform_merchants.id', $m->id)
            ->where('platform_customers.platform_merchant_id', $m->id)
            ->orWhere('tickets.platform_user_id', $m->id)
            ->get();

在这里,第一个Appstate创建一个Qr代码阅读器。其次是创建具有共享首选项的输入控制器,该共享首选项可以在本地存储和检索数据。但是,在运行代码时,应用程序仅显示qrscan部分,而2nd无法正常工作。我是import 'dart:async'; import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:image_gallery_saver/image_gallery_saver.dart'; import 'package:image_picker/image_picker.dart'; import 'package:qrscan/qrscan.dart' as scanner; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { Uint8List bytes = Uint8List(0); TextEditingController _inputController; TextEditingController _outputController; @override initState() { super.initState(); this._inputController = new TextEditingController(); this._outputController = new TextEditingController(); } @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( backgroundColor: Colors.grey[300], body: Builder( builder: (BuildContext context) { return ListView( children: <Widget>[ _qrCodeWidget(this.bytes, context), Container( color: Colors.white, child: Column( children: <Widget>[ TextField( controller: this._inputController, keyboardType: TextInputType.url, textInputAction: TextInputAction.go, onSubmitted: (value) => _generateBarCode(value), decoration: InputDecoration( prefixIcon: Icon(Icons.text_fields), helperText: 'Please input your code to generage qrcode image.', hintText: 'Please Input Your Code', hintStyle: TextStyle(fontSize: 15), contentPadding: EdgeInsets.symmetric( horizontal: 7, vertical: 15), ), ), SizedBox(height: 20), TextField( controller: this._outputController, maxLines: 2, decoration: InputDecoration( prefixIcon: Icon(Icons.wrap_text), helperText: 'The barcode or qrcode you scan will be displayed in this area.', hintText: 'The barcode or qrcode you scan will be displayed in this area.', hintStyle: TextStyle(fontSize: 15), contentPadding: EdgeInsets.symmetric( horizontal: 7, vertical: 15), ), ), SizedBox(height: 20), this._buttonGroup(), SizedBox(height: 70), ], ), ), ], ); }, ), floatingActionButton: FloatingActionButton( onPressed: () => _scanBytes(), tooltip: 'Take a Photo', child: const Icon(Icons.camera_alt), ), ), ); } Widget _qrCodeWidget(Uint8List bytes, BuildContext context) { return Padding( padding: EdgeInsets.all(20), child: Card( elevation: 6, child: Column( children: <Widget>[ Container( child: Row( crossAxisAlignment: CrossAxisAlignment.end, children: <Widget>[ Icon(Icons.verified_user, size: 18, color: Colors.green), Text(' Generate Qrcode', style: TextStyle(fontSize: 15)), Spacer(), Icon(Icons.more_vert, size: 18, color: Colors.black54), ], ), padding: EdgeInsets.symmetric(horizontal: 10, vertical: 9), decoration: BoxDecoration( color: Colors.black12, borderRadius: BorderRadius.only( topLeft: Radius.circular(4), topRight: Radius.circular(4)), ), ), Padding( padding: EdgeInsets.only( left: 40, right: 40, top: 30, bottom: 10), child: Column( children: <Widget>[ SizedBox( height: 190, child: bytes.isEmpty ? Center( child: Text('Empty code ... ', style: TextStyle(color: Colors.black38)), ) : Image.memory(bytes), ), Padding( padding: EdgeInsets.only(top: 7, left: 25, right: 25), child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: <Widget>[ Expanded( flex: 5, child: GestureDetector( child: Text( 'remove', style: TextStyle( fontSize: 15, color: Colors.blue), textAlign: TextAlign.left, ), onTap: () => this.setState(() => this.bytes = Uint8List(0)), ), ), Text('|', style: TextStyle(fontSize: 15, color: Colors .black26)), Expanded( flex: 5, child: GestureDetector( onTap: () async { final success = await ImageGallerySaver.saveImage( this.bytes); SnackBar snackBar; if (success) { snackBar = new SnackBar(content: new Text( 'Successful Preservation!')); Scaffold.of(context).showSnackBar(snackBar); } else { snackBar = new SnackBar(content: new Text('Save failed!')); } }, child: Text( 'save', style: TextStyle( fontSize: 15, color: Colors.blue), textAlign: TextAlign.right, ), ), ), ], ), ) ], ), ), Divider(height: 2, color: Colors.black26), ], ), ), ); } Widget _buttonGroup() { return Row( children: <Widget>[ Expanded( flex: 1, child: SizedBox( height: 120, child: InkWell( onTap: () => _generateBarCode(this._inputController.text), child: Card( child: Column( children: <Widget>[ Expanded( flex: 2, child: Image.asset('images/generate_qrcode.png'), ), Divider(height: 20), Expanded(flex: 1, child: Text("Generate")), ], ), ), ), ), ), Expanded( flex: 1, child: SizedBox( height: 120, child: InkWell( onTap: _scan, child: Card( child: Column( children: <Widget>[ Expanded( flex: 2, child: Image.asset('images/scanner.png'), ), Divider(height: 20), Expanded(flex: 1, child: Text("Scan")), ], ), ), ), ), ), Expanded( flex: 1, child: SizedBox( height: 120, child: InkWell( onTap: _scanPhoto, child: Card( child: Column( children: <Widget>[ Expanded( flex: 2, child: Image.asset('images/albums.png'), ), Divider(height: 20), Expanded(flex: 1, child: Text("Scan Photo")), ], ), ), ), ), ), ], ); } Future _scan() async { String barcode = await scanner.scan(); if (barcode == null) { print('nothing return.'); } else { this._outputController.text = barcode; } } Future _scanPhoto() async { String barcode = await scanner.scanPhoto(); this._outputController.text = barcode; } Future _scanPath(String path) async { String barcode = await scanner.scanPath(path); this._outputController.text = barcode; } Future _scanBytes() async { File file = await ImagePicker.pickImage(source: ImageSource.camera); Uint8List bytes = file.readAsBytesSync(); String barcode = await scanner.scanBytes(bytes); this._outputController.text = barcode; } Future _generateBarCode(String inputCode) async { Uint8List result = await scanner.generateBarCode(inputCode); this.setState(() => this.bytes = result); } } class MyAppState extends State<MyApp> { Future<SharedPreferences> _sPrefs = SharedPreferences.getInstance(); final TextEditingController controller = TextEditingController(); List<String> listOne, listTwo; @override void initState() { super.initState(); listOne = []; listTwo = []; } Future<Null> addString() async { final SharedPreferences prefs = await _sPrefs; listOne.add(controller.text); prefs.setStringList('list', listOne); setState(() { controller.text = ''; }); } Future<Null> clearItems() async { final SharedPreferences prefs = await _sPrefs; prefs.clear(); setState(() { listOne = []; listTwo = []; }); } Future<Null> getStrings() async { final SharedPreferences prefs = await _sPrefs; listTwo = prefs.getStringList('list'); setState(() {}); } Future<Null> updateStrings(String str) async { final SharedPreferences prefs = await _sPrefs; setState(() { listOne.remove(str); listTwo.remove(str); }); prefs.setStringList('list', listOne); } @override Widget build(BuildContext context) { getStrings(); return Center( child: ListView( children: <Widget>[ TextField( controller: controller, decoration: InputDecoration( hintText: 'Type in something...', )), RaisedButton( child: Text("Submit"), onPressed: () { addString(); }, ), RaisedButton( child: Text("Clear"), onPressed: () { clearItems(); }, ), Flex( direction: Axis.vertical, children: listTwo == null ? [] : listTwo .map((String s) => Dismissible( key: Key(s), onDismissed: (direction) { updateStrings(s); }, child: ListTile( title: Text(s), ))) .toList(), ) ], ), ); } } 的新手。我刚刚开始在Android Studio上工作。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

尝试从MyApp类的 home 属性调用另一个类。 如您在此image

中所见
import 'package:flutter/material.dart';
void main() {
   runApp(MyApp());
}

class MyApp extends StatelessWidget {
 @override
  Widget build(BuildContext context) {
    return MaterialApp(
    theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
    debugShowCheckedModeBanner: false,
    //Here I have called MyWidget Class 
   home: MyWidget()
  );
 }
}

 class MyWidget extends StatefulWidget {
 @override
 _MyWidgetState createState() => _MyWidgetState();
 }

class _MyWidgetState extends State<MyWidget> {
 Uint8List bytes = Uint8List(0);
 TextEditingController _inputController;
 TextEditingController _outputController;
 @override
  initState() {
   super.initState();
   this._inputController = new TextEditingController();
   this._outputController = new TextEditingController();
}

@override
 Widget build(BuildContext context) {
   return MaterialApp(
    debugShowCheckedModeBanner: false,
     home: Scaffold(