Skip to content
Snippets Groups Projects
main.dart 8.73 KiB
Newer Older
Maximilian Betz's avatar
Maximilian Betz committed
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'data_model.dart';
Maximilian Betz's avatar
Maximilian Betz committed

void main() {
  runApp(MaterialApp(
    title: 'Mobile Event Log',
    theme: ThemeData(
      primarySwatch: Colors.blue,
    ),
    initialRoute: '/',
    routes: {
      '/': (context) => Overview(),
      '/second': (context) => AddEvent(),
      '/third': (context) => ViewEvents(),
      '/forth': (context) => Configuration(),
    },
  ));
}

class Overview extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Mobile Event Log')),
      body: Center(
          child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: <Widget>[
          ElevatedButton(
            child: const Text('Add Event'),
            onPressed: () {
              Navigator.pushNamed(context, '/second');
            },
          ),
          ElevatedButton(
            child: const Text('View Added Events'),
            onPressed: () {
              Navigator.pushNamed(context, '/third');
            },
          ),
          ElevatedButton(
            child: const Text('Configuration'),
            onPressed: () {
              Navigator.pushNamed(context, '/forth');
            },
          ),
        ],
      )),
    );
  }
}

class AddEvent extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Add Event"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: const Text('Back!'),
        ),
      ),
      bottomNavigationBar: Row(
        mainAxisAlignment: MainAxisAlignment.end,
        children: const [
          FloatingActionButton(
            heroTag: null,
            onPressed: null,
            tooltip: 'Add Event locally',
            child: Icon(Icons.add),
          )
        ],
      ),
    );
  }
}

class ViewEvents extends StatelessWidget {
  // Add some dummy events:
  List<Event> events = []
    ..add(Event(
        id: 8311,
        urn: 'station:neumayer_iii:awi_snow_sampler_1',
        label: 'SML_KO21_SC01',
        type: 'Deployment',
        description: 'Remi tool Tag1 1 Traverse',
        status: 'PENDING'))
    ..add(Event(
        id: 8311,
        urn: 'station:neumayer_iii:awi_snow_sampler_1',
        label: 'SML_KO21_SC01',
        type: 'Deployment',
        description: 'Remi tool Tag1 1 Traverse',
        status: 'PENDING'))
    ..add(Event(
        id: 8311,
        urn: 'station:neumayer_iii:awi_snow_sampler_1',
        label: 'SML_KO21_SC01',
        type: 'Deployment',
        description: 'Remi tool Tag1 1 Traverse',
        status: 'PENDING'));

  //for (var i = 0; i<100; i++){
  //  events.add(Event(id: i, urn: 'station:neumayer_iii:awi_snow_sampler_1', label: 'SML_KO21_SC01', type: 'Deployment', description: 'Remi tool Tag1 1 Traverse', status: 'PENDING'));
  //}
Maximilian Betz's avatar
Maximilian Betz committed
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("View Added Events"),
      ),
      body: SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: SingleChildScrollView(
          scrollDirection: Axis.vertical,
          child: DataTable(
            columns: const <DataColumn>[
              DataColumn(
                label: Text(
                  'Id',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              DataColumn(
                label: Text(
                  'URN',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              DataColumn(
                label: Text(
                  'Label',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              DataColumn(
                label: Text(
                  'Type',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              DataColumn(
                label: Text(
                  'Description',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              DataColumn(
                label: Text(
                  'Status',
                  style: TextStyle(fontStyle: FontStyle.italic),
                ),
              ),
            ],
            rows: <DataRow>[
              for (var event in events)
                DataRow(
                  cells: <DataCell>[
                    DataCell(Text(event.id.toString())),
                    DataCell(Text(event.urn)),
                    DataCell(
                      TextFormField(
                        initialValue: event.label,
                        onFieldSubmitted: (val) {
                          event.label = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(Text(event.type)),
                    DataCell(
                      TextFormField(
                        initialValue: event.description,
                        onFieldSubmitted: (val) {
                          event.description = val; //Update Database
                        },
                      ),
                    ),
                    DataCell(
                      DropdownButtonFormField(
                        //value: Text('abe'),
                        items: <DropdownMenuItem>[
                          DropdownMenuItem(
                            child: Text('abs'),
                            value: Text('1'),
                          ),
                          DropdownMenuItem(
                            child: Text('abc'),
                            value: Text('1'),
                          ),
                        ],
                        onChanged: null,
                      ),
                    ),
                  ],
                ),
Maximilian Betz's avatar
Maximilian Betz committed
        ),
      ),
    );
  }
}

class Configuration extends StatefulWidget {
  @override
  State<Configuration> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<Configuration> {
  int _counter = 0;
  int _factor = 1;

  String selectedValue = '1';
  var available_items = [
    '1',
    '10',
    '100',
  ];

  late Future<String> eventTypes;

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

  void _incrementCounter() {
    setState(() {
      _counter = _counter + _factor;
    });
  }

  void _decrementCounter() {
    setState(() {
      _counter = _counter - _factor;
    });
  }

  void _resetCounter() {
    setState(() {
      _counter = 0;
    });
  }

  void _getCollections() {
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Configuration'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline2,
            ),
            DropdownButton(
              value: selectedValue,
              icon: const Icon(Icons.keyboard_arrow_down),
              items: available_items.map((String available_items) {
                return DropdownMenuItem(
                  value: available_items,
                  child: Text(available_items),
                );
              }).toList(),
              onChanged: (String? newValue) {
                setState(() {
                  selectedValue = newValue!;
                  _factor = int.parse(selectedValue);
                });
              },
            ),
            Text('blabla'),
          ],
        ),
      ),
      bottomNavigationBar: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          FloatingActionButton(
            heroTag: null,
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: const Icon(Icons.add),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _decrementCounter,
            tooltip: 'Decrement',
            child: const Text('-'),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _resetCounter,
            tooltip: 'Reset to 0',
            child: const Icon(Icons.delete),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _getCollections,
            tooltip: 'Reset to 0',
            child: const Text('Update'),
          ),
        ],
      ),
    );
  }
}